Вебсправочник
Основы веб-разработки

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

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.