Ho trovato la soluzione alternativa successiva. È possibile evitare il reindirizzamento dopo l'elaborazione della POST
richiesta manipolando l' history
oggetto.
Quindi hai il modulo HTML:
<form method=POST action='/process.php'>
<input type=submit value=OK>
</form>
Quando elabori questo modulo sul tuo server invece di reindirizzare l'utente /the/result/page
impostando l' Location
intestazione in questo modo:
$cat process.php
<?php
process POST data here
...
header('Location: /the/result/page');
exit();
?>
Dopo aver elaborato i POST
dati renderli piccoli <script>
e il risultato/the/result/page
<?php
process POST data here
render the <script> // see below
render `/the/result/page` // OK
?>
La <script>
si dovrebbe render:
<script>
window.onload = function() {
history.replaceState("", "", "/the/result/page");
}
</script>
Il risultato è:
come puoi vedere, i dati del modulo vengono modificati POST
nello process.php
script.
Questo script ha elaborato i POST
dati e il rendering /the/result/page
contemporaneamente con:
- nessun reindirizzamento
- nessun
POST
dato relativo all'aggiornamento della pagina (F5)
- no
POST
quando si passa alla pagina precedente / successiva attraverso la cronologia del browser
UPD
Come altra soluzione, chiedo alla funzione di richiedere al team Mozilla FireFox di consentire agli utenti di impostare l' NextPage
intestazione che funzionerà come Location
intestazione e renderà post/redirect/get
obsoleto lo schema.
In breve. Quando il server elabora POST
correttamente i dati del modulo :
- Imposta
NextPage
intestazione invece diLocation
- Rendering del risultato dell'elaborazione dei
POST
dati del modulo come verrebbe visualizzato per la GET
richiesta nel post/redirect/get
modello
Il browser a sua volta quando vedi l' NextPage
intestazione:
- Regola
window.location
con NextPage
valore
- Quando l'utente aggiorna la pagina, il browser negozia la
GET
richiesta NextPage
anziché riformulare i POST
dati
Penso che questo sarebbe eccellente se implementato, no? =)