Bene, per impostazione predefinita ogni volta che si ha a che fare con un modulo POST, e quindi l'utente esegue un riscontro e quindi aggiorna, vedrà il messaggio che indica che il browser sta inviando nuovamente i dati. Ma se la pagina è impostata per scadere immediatamente, non sarà nemmeno necessario effettuare il refresh e vedranno la pagina scaduta quando torneranno indietro.
Per evitare entrambi i messaggi ci sono un paio di cose da provare:
1) usare una forma GET invece. Dipende da cosa stai facendo, ma questa non è sempre una buona soluzione dato che ci sono ancora restrizioni sulle dimensioni di una richiesta GET. E le informazioni sono passate nella querystring che non è la più sicura delle opzioni.
- o -
2) Eseguire un server-side redirect ad una pagina diversa dopo il form POST.
Sembra una domanda simile è stato risposto qui:
Redirect with a 303 after POST to avoid "Webpage has expired": Will it work if there are more bytes than a GET request can handle?
Come terza opzione si potrebbe impedire a un utente di tornare nel loro browser a tutti. L'unica volta che ho sentito il bisogno di fare questo è stato di impedire loro di fare qualcosa di stupido come pagare due volte. Sebbene ci siano migliori metodi sul lato server per gestirlo. Se il tuo sito utilizza sessioni, puoi impedire che paghino due volte prima disabilitando la cache nella pagina di checkout e impostando la scadenza immediatamente. E poi puoi usare una bandiera di qualche tipo memorizzata in una sessione che cambierà il comportamento della pagina se torni indietro.
fonte
2009-10-16 19:59:07
meglio sarebbe per progettare la tua app in modo che il pulsante Indietro abbia un significato ragionevole. Trovo esasperante quando non sono autorizzato a usare il pulsante Indietro. – Peter
Peter, sono d'accordo. Ci sono momenti (come la procedura di checkout di un sito di e-commerce) quando potresti essere tentato di impedire all'utente di tornare indietro. Tuttavia, c'è una migliore soluzione lato server per quel problema che suggerisco nella mia risposta. –
@Peter, sono completamente d'accordo, ma ho a che fare con i flussi di lavoro, quindi il pulsante Indietro non si applica qui. – mkoryak