Повторная отправка формы при нажатии «Назад» в браузере — классическая проблема, возникающая, когда сервер обрабатывает форму без последующего перенаправления на отдельную страницу.
Почему это происходит
Если после отправки формы сервер напрямую показывает страницу результата (без редиректа), браузер сохраняет эту страницу в истории как результат POST-запроса. При нажатии «Назад», а затем «Вперёд» браузер может попытаться повторно выполнить тот же POST-запрос, отправляя форму заново.
Решение — паттерн Post/Redirect/Get
После успешной обработки формы сервер должен выполнить редирект на отдельную страницу (например, страницу благодарности) методом GET, а не просто напрямую вывести результат. Тогда в истории браузера сохраняется GET-запрос, повторное выполнение которого безопасно и не создаёт дублирующую отправку.
Дополнительная защита
Идемпотентный токен формы, проверяемый на сервере, предотвращает повторную обработку одной и той же отправки, даже если по какой-то причине запрос всё же придёт дважды.



