Post/Redirect/Get
| Post/Redirect/Get |
Post/Redirect/Get (PRG) — общий шаблон проектирования для веб-приложений, который обеспечивает защиту от повторной отправки данных веб-форм (от т.н. double submit problem) и интуитивно понятное поведение веб-приложений при использовании закладок в браузере и обновлении страниц.
После того, как пользователь отправит данные с веб-формы на сервер, сервер генерирует HTML-страницу в ответ. Для пользователя это обычная веб-страница, но поскольку она была сгенерирована в ответ на POST-запрос, то при обновлении страницы браузер может ещё раз отправить данные на сервер, тем самым обеспечив повторную отправку данных.
Для решения этой проблемы в веб-приложениях используют паттерн Post/Redirect/Get — вместо возврата непосредственно HTML-страницы после POST-запроса происходит редирект (используется код HTTP 302 (иногда 301) вместе с HTTP-заголовком ответа «Location»), инструктируя браузер о следующей загружаемой странице через HTTP GET-запрос. Страницу, полученную в результате данных действий, можно поместить в закладки браузера и обновить, при этом повторная отправка данных на сервер не произойдет.
[править] Ссылки
- Redirect After Post, Michael Jouravlev, August 2004
- Description of the pattern for J2EE, Michael Jouravlev, August 14, 2003
- GET after POST Adam Vandenberg
- Is the Portlet Programming Model Broken? Subbu Allamaraju
- How to avoid POSTDATA resend warning Anis uddin Ahmad
- ASP.NET MVC — RC1 — Паттерн Post-Redirect-Get Alex Nesterov
- Пример обработки формы и реализация шаблона Post/Redirect/Get на языке PHP
| В данной статье или разделе имеется список источников или внешних ссылок, но источники отдельных утверждений остаются неясными из-за отсутствия сносок.
Вы можете улучшить статью, внеся более точные указания на источники.
|