Jump to content

Опубликовать/Перенаправить/Получить

Схема двойной проблемы POST, возникшей в пользовательских агентах.
Схема проблемы двойного POST, решаемой PRG выше.

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

Когда веб-форма отправляется на сервер через HTTP- запрос POST , попытки обновить ответ сервера могут привести к повторной отправке содержимого исходного POST, что может привести к нежелательным результатам, например к дублированию веб- покупок . [1] Некоторые браузеры снижают этот риск, предупреждая пользователя о том, что он собирается повторно отправить запрос POST.

Чтобы избежать этой проблемы, многие веб-разработчики используют шаблон PRG. [2] — вместо ответа контентом сервер отвечает на запрос POST, перенаправляя клиента в другое место. В спецификации HTTP 1.1 введен код ответа HTTP 303 («См. другое»), чтобы гарантировать, что в этой ситуации браузеры могут безопасно обновить ответ сервера, не вызывая повторной отправки исходного запроса POST.

Шаблон PRG не может удовлетворить все сценарии отправки дубликатов форм. Например, если веб-пользователь обновляется до завершения первоначальной отправки, возможно, из-за задержки сервера , в некоторых пользовательских агентах происходит дублирование POST.

Закладки

[ редактировать ]

Пользовательские агенты (например, браузеры) сохраняют в качестве закладки только URL-адрес HTTP-запроса. По этой причине ответ, основанный на теле запроса HTTP POST, не может быть добавлен в закладки. С помощью шаблона PRG URI запроса можно безопасно добавить в закладки.

  1. ^ Гринберг, Мигель (2014). Веб-разработка Flask (1-е изд.). О'Рейли. стр. 44–46. ISBN  978-1-449-37262-0 .
  2. ^ Чисхолм, Венди; Мэй, Мэтт (2008). Универсальный дизайн для веб-приложений . О'Рейли Медиа, Инк. с. 36.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1f9b12087f2c4e86239bcdedf989f531__1681379040
URL1:https://arc.ask3.ru/arc/aa/1f/31/1f9b12087f2c4e86239bcdedf989f531.html
Заголовок, (Title) документа по адресу, URL1:
Post/Redirect/Get - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)