пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Программирование в интернет:
» ПИ
» ОКГТМ
» КИНФС

Паттерн PRG (Post/Redirect/Get).

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

                Суть проблемы повторной отправки веб-формы заключается в том, что после первой отправки и получения результата пользователь может нажать в браузере кнопку "Обновить", в результате чего данные могут быть отправлены повторно, а это может привести к нежелательным последствиям, как, например, повторная покупка в интернет-магазине, повторный перевод денег с банковского счета и т. д. Повторная отправка может произойти и без кнопки "Обновить", если браузер настроен автоматически "восстанавливать вкладки" после его закрытия и открытия. В этом случае, если пользователь закроет браузер после первой отправки формы, не закрыв вкладку с результатом, а затем вновь откроет браузер, то браузер запросит повторно все страницы прошлой сессии, включая отправку формы. (Нужно отметить, что в последнее время многие производители браузеров уделили внимание этой проблеме, и браузеры стали спрашивать у пользователя разрешение на повторную отправку форм).

                Суть решения проблемы при использовании модели PRG заключается в том, что в ответ на отправку данных веб-формы, сервер не просто генерирует HTML-страницу с результатом, а возвращает браузеру заголовок перенаправления «Location» (при этом используются коды состояния HTTP 302, HTTP 303, иногда HTTP 301) ведущий на страницу с результатом, но уже вызываемым обычным методом GET, а не POST, и без данных веб-формы, конечно. При обновлении такой страницы с результатом нежелательных действий не произойдет, ее даже можно использовать в качестве закладки в браузере.


12.01.2016; 21:44
хиты: 74
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь