2012-05-31 26 views
5

La mia applicazione disabilita la memorizzazione nella cache del browser tramite le intestazioni di risposte e quindi utilizza il pattern Post-Redirect-Get per abilitare il pulsante Indietro per "re-get" la pagina corrente.
Tuttavia su questo nuovo test ora con Firefox 12 e IE 8 non vedo i risultati che mi aspettavo (o che avevo visto prima con IE 6).Comportamento del pulsante Indietro dopo il reindirizzamento-Get

Dopo aver selezionato il pulsante indietro posso vedere che il browser sta tentando di eseguire la richiesta originale (il Post), non è richiesta reindirizzata (la Get). Quando guardo le richieste nella scheda di rete di Firebug vedo il seguente:

Post-Redirect-Get

Sembra che il browser sta trattando il Post e ottenere la stessa richiesta e quindi selezionando il pulsante posteriore è presentare nuovamente post:

Result of Back Button

sto usando JSF, ma credo che questo è un problema di browser. Qualcuno sa perché il browser non sta eseguendo una revisione della pagina reindirizzata?

risposta

4

Sta funzionando bene. Il pulsante Indietro rielabora la richiesta prima dello "POST accountDetails.xhtml" che non è elencata nel tuo primo screenshot, ma è secondo la seconda schermata apparentemente (e logicamente) un "GET accountDetails.xhtml". Apparentemente sei nel bean associato a quella vista o in qualche filtro che esegue alcuni controlli e reindirizza a "registrationWelcome.xhtml". Il "POST accountDetails.xhtml" nella prima schermata è la richiesta corrente che è stata reindirizzata a "reviewInfo.xhtml".

Il pulsante Indietro non esegue nuovamente il reindirizzamento. È il tuo codice che l'ha fatto. Il pulsante Indietro non esegue nuovamente la richiesta POST, che viene confermata nella seconda schermata.

+0

Grazie BalusC, sei corretto, la richiesta che precede il "POST accountDetails.xhtml" è "Ottieni accountDetails.xhtml". Giusto per chiarire la mia comprensione, stai dicendo che il pulsante back considera "POST accountDetails.xhtml -> GET reviewInfo.xhtml" come la stessa richiesta (e la richiesta corrente) e quindi viene eseguita la precedente richiesta "GET accountDetails.xhtml" dal pulsante Indietro? – Paul

+1

Il pulsante indietro eseguirà di nuovo 'GET reviewInfo.xhtml' invece di' POST accountDetails.xhtml' quando si preme il pulsante Indietro nella pagina successiva * dopo * si è allontanati da 'reviewInfo.xhtml'. Il pulsante Indietro non esegue di nuovo la richiesta corrente. Il pulsante di aggiornamento lo fa. A prescindere dal PRG, il pulsante di aggiornamento avrebbe comunque rieseguito il POST. – BalusC

+0

Intendevi "Senza il PRG, il pulsante ** back ** avrebbe comunque rieseguito il POST."? – Paul

Problemi correlati