POST–Redirect–GET: страница результата после отправки формы
После успешной обработки POST сервер может перенаправить браузер на отдельный адрес результата. Это отделяет изменение данных от обычного просмотра страницы и делает обновление результата понятнее.
Назначение
После успешной обработки POST сервер может перенаправить браузер на отдельный адрес результата. Это отделяет изменение данных от обычного просмотра страницы и делает обновление результата понятнее.
Как это работает
Типичная последовательность: сервер принимает POST, сохраняет допустимые данные и отвечает 303 с Location. Браузер запрашивает указанный ресурс методом GET. Ниже схема обмена, а не готовая конфигурация действующего сервера.
Пример
POST /feedback HTTP/1.1
Content-Type: application/x-www-form-urlencoded
message=example
HTTP/1.1 303 See Other
Location: /feedback/complete
GET /feedback/complete HTTP/1.1
Что должно получиться
В адресной строке оказывается страница результата. Её обычное обновление повторяет GET, а не исходную отправку формы. Сам обработчик POST и хранение результата в примере намеренно не реализованы.
Граница применения и частая ошибка
Перенаправление не предотвращает двойное нажатие, повтор сети или конкурирующие запросы до получения ответа. Для операций с последствиями нужна отдельная защита от повторной обработки. Не помещайте секретные данные в Location и не принимайте адрес перенаправления без проверки.
Самостоятельная проверка
На своём тестовом обработчике запишите цепочку запросов в Network. Сравните обновление конечной страницы с повторным отправлением исходной формы. Отдельно проверьте ошибочные данные: они не должны показывать ложную страницу успеха.