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-запрос. Страницу, полученную в результате данных действий, можно поместить в закладки браузера и обновить, при этом повторная отправка данных на сервер не произойдет.

[править] Ссылки