Pubblica/Reindirizza/Ottieni - Post/Redirect/Get
Post/Redirect/Get ( PRG ) è un modello di progettazione per lo sviluppo web che consente di ricaricare, condividere o aggiungere un segnalibro alla pagina mostrata dopo l' invio di un modulo senza effetti negativi, come l'invio del modulo un'altra volta.
Quando un modulo Web viene inviato a un server tramite una richiesta HTTP POST , i tentativi di aggiornare la risposta del server possono causare il reinvio del contenuto del POST originale, con possibili risultati indesiderati, ad esempio un acquisto Web duplicato . Alcuni browser mitigano questo rischio avvisando l'utente che stanno per inviare nuovamente una richiesta POST.
Per evitare questo problema, molti sviluppatori Web utilizzano il pattern PRG: invece di rispondere con il contenuto, il server risponde a una richiesta POST reindirizzando il client a un'altra posizione. La specifica HTTP 1.1 ha introdotto il codice di risposta HTTP 303 ("Vedi altro") per garantire che in questa situazione i browser possano aggiornare in sicurezza la risposta del server senza causare il reinvio della richiesta POST iniziale.
Il modello PRG non può affrontare ogni scenario di invio di moduli duplicati. Ad esempio, se un utente Web si aggiorna prima del completamento dell'invio iniziale, probabilmente a causa del ritardo del server , si verifica un POST duplicato in alcuni agenti utente.
segnalibri
Gli agenti utente (come i browser) memorizzano solo l' URL di una richiesta HTTP come segnalibro. Per questo motivo, non è possibile aggiungere un segnalibro a una risposta basata sul corpo della richiesta HTTP POST. Con il pattern PRG, l'URI della richiesta può essere tranquillamente aggiunto ai segnalibri.
Riferimenti
link esterno
-
Redirect After Post , Michael Jouravlev, agosto 2004
- Descrizione del pattern per J2EE , Michael Jouravlev, 14 agosto 2003
- GET dopo POST Adam Vandenberg
- Fare il PRG in JSF1.2