Patrons de conception/Post-Redirect-Get
Le patron de conception Post-Redirect-Get (PRG) est une solution spécifique au protocole HTTP pour le développement de serveur web.
Patron de conception | |
---|---|
Catégorie : Autre | |
Nom français : | Post-Redirect-Get |
Nom anglais : | Post-Redirect-Get |
Éviter la soumission multiple d'un formulaire web lors d'un rafraîchissement |
Quand un utilisateur soumet un formulaire web (exemples : une commande, une souscription, une nouvelle version de page wiki) dont l'envoi est de type POST, le navigateur l'envoie avec la méthode POST, et reçoit une confirmation du serveur après traitement de la requête et du formulaire.
Le problème
modifierSans utilisation du patron de conception, les échanges sont les suivants (seule la première ligne est montrée) :
|
La soumission multiple du formulaire peut avoir des effets indésirables dont notamment le renouvellement de l'achat d'un article.
La solution
modifierCe problème est résolu côté serveur en répondant par une redirection :
|
Le client reçoit une redirection au lieu de la page directement en réponse de l'envoi du formulaire. Le protocole HTTP spécifie que la redirection de code 303 doit être faite avec la méthode GET, ce que fait le client aussitôt pour recevoir la page de confirmation. Si l'utilisateur rafraîchit la page, le formulaire n'est plus renvoyé car la redirection a forcé le changement de méthode à GET.
Le nom du patron de conception donne donc un résumé des premiers échanges effectués (requête POST, réponse REDIRECT, requête GET).