Saya menemukan solusi berikutnya. Anda dapat menghindari pengalihan setelah memproses POST
permintaan dengan memanipulasihistory
objek.
Jadi, Anda memiliki formulir HTML:
<form method=POST action='/process.php'>
<input type=submit value=OK>
</form>
Saat Anda memproses formulir ini di server Anda, alih-alih mengarahkan pengguna /the/result/page
dengan mengatur Location
tajuk seperti ini:
$cat process.php
<?php
process POST data here
...
header('Location: /the/result/page');
exit();
?>
Setelah mengolah POST
data ed Anda membuat kecil <script>
dan hasilnya/the/result/page
<?php
process POST data here
render the <script> // see below
render `/the/result/page` // OK
?>
The <script>
Anda harus membuat:
<script>
window.onload = function() {
history.replaceState("", "", "/the/result/page");
}
</script>
Hasilnya adalah:
karena Anda dapat melihat formulir data POST
diedarkan ke process.php
skrip.
Script ini memproses POST
data dan rendering /the/result/page
sekaligus dengan:
- tidak ada pengalihan
- tidak ada
POST
data saat Anda me-refresh halaman (F5)
- no re
POST
ketika Anda menavigasi ke halaman sebelumnya / berikutnya melalui riwayat browser
UPD
Sebagai solusi lain saya meminta fitur meminta tim Mozilla FireFox untuk memungkinkan pengguna untuk mengatur NextPage
header yang akan berfungsi sepertiLocation
tajuk dan pembuatanpost/redirect/get
pola usang.
Pendeknya. Ketika server memproses POST
data dengan sukses, itu:
- Atur
NextPage
tajuk alih-alihLocation
- Berikan hasil pemrosesan
POST
data formulir karena akan membuat GET
permintaan dalam post/redirect/get
pola
Browser pada gilirannya ketika melihat NextPage
tajuk:
- Menyesuaikan
window.location
dengan NextPage
nilai
- Saat pengguna me-refresh halaman, browser akan menegosiasikan
GET
permintaan NextPage
alih-alih kembaliPOST
membentuk data
Saya pikir ini akan sangat baik jika diimplementasikan, bukan? =)