Post-Redirect-Get

Post-Redirect-Get
Diagramme d'un problème de multiple soumission.
Diagramme de la résolution du problème avec le pattern PRG.

Post-Redirect-Get ou Post/Redirect/Get (PRG), aussi nommé Redirect After Post, est un patron de conception très répandu dans la programmation web. Il permet de résoudre une partie des problèmes de multiple soumission d'un formulaire, ainsi que de moins perturber le fonctionnement des marque-pages et de la commande "page précédente" des navigateurs web.

Problème de multiple soumission de formulaire

Lorsqu'un formulaire web est soumis à un serveur à travers une requête HTTP POST, un internaute rafraîchissant la réponse du serveur peut provoquer la resoumission de la requête HTTP POST originale, pouvant provoquer des résultats indésirables, comme la répétition d'un achat. Certains navigateurs affichent un message d'avertissement avant la resoumission du formulaire, mais rien n'empêche celle-ci d'avoir quand même lieu.

Afin d'éviter ce problème, de nombreux développeurs web emploient le pattern PRG : au lieu de directement retourner une page, la requête POST retourne un header de redirection. Une implémentation correcte des spécifications HTTP 1.1 exige que l'application web retourne une réponse HTTP 303 dans cette situation, assurant ainsi que le navigateur peut effectuer un rafraîchissement de la page sans répéter la soumission de la requête POST.

Le pattern PRG ne permet pas de résoudre la totalité des scénarios pouvant entraîner une multiple soumission. Par exemple, le pattern PRG ne résout pas les scénarios suivants :

  • L'utisateur revient sur la page du formulaire et soumet celui-ci à nouveau.
  • L'utilisateur clique plusieurs fois sur le bouton de soumission avant le chargement de la réponse du serveur (on peut s'en prémunir avec du JavaScript désactivant le bouton après le premier clic).
  • L'utilisateur rafraîchit la page avant que la soumission initiale soit achevée (à cause du lag du serveur), générant une requête POST supplémentaire avec certains navigateurs.

Sur les autres projets Wikimedia :


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Post-Redirect-Get de Wikipédia en français (auteurs)

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • Post/Redirect/Get — (PRG) общий шаблон проектирования для веб приложений, который обеспечивает защиту от повторной отправки данных веб форм и интуитивно понятное поведение веб приложений при использовании закладок в браузере и обновлении страниц. После того, как… …   Википедия

  • Post/Redirect/Get — (PRG) is a common design pattern for web applications, to help avoid duplicate form submissions and allow web applications to behave more intuitively with browser bookmarks and the reload button.After a web user submits a form to a server, the… …   Wikipedia

  • Thumbnail gallery post — A thumbnail gallery post (TGP) is a common type of ad driven website that provides links to free Internet pornography. [ [http://www.cozyacademy.com/classrooms/tgp/index.asp Tutorial about TGPs and galleries] for adult webmasters, by Cozy Academy …   Wikipedia

  • PRG — can mean: * Short cut for Prague *Parti Radical de Gauche *Pontine respiratory group *Provisional Revolutionary Government of the Republic of South Vietnam *Post/Redirect/Get, a common design pattern for web applications *Programming Research… …   Wikipedia

  • PRG — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom.   Sigles d’une seule lettre   Sigles de deux lettres > Sigles de trois lettres   Sigles de quatre lettres …   Wikipédia en Français

  • Веб-программирование — Веб программирование. Бурно развивающийся раздел программирования, ориентированный на разработку динамических Internet приложений. Языки веб программирования  это соответственно языки, которые в основном предназначены для работы с интернет… …   Википедия

  • SAML 2.0 — Security Assertion Markup Language (SAML) is an XML standard for exchanging authentication and authorization data between security domains. SAML is a standard set by the OASIS [http://www.oasis open.org/committees/tc home.php?wg abbrev=security… …   Wikipedia

  • Security Assertion Markup Language — (SAML) is an XML based standard for exchanging authentication and authorization data between security domains, that is, between an identity provider (a producer of assertions) and a service provider (a consumer of assertions). SAML is a product… …   Wikipedia

  • Ошибка 404 — SSL Заголовки (список) Cookie · ETag · Referer · User Agent Коды состояния Код состояния англ. HTTP status code) является частью первой строки ответа сервера. Он представляет собой целое число из трех арабских цифр. Первая цифра указывает на… …   Википедия

  • Ошибка 403 — SSL Заголовки (список) Cookie · ETag · Referer · User Agent Коды состояния Код состояния англ. HTTP status code) является частью первой строки ответа сервера. Он представляет собой целое число из трех арабских цифр. Первая цифра указывает на… …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”