Мой коллега работал над предотвращением повторных представлений формы (при успешном представлении мы отправлены по электронной почте и создаем запись в БД). Представления не удаются, если в форме есть ошибки.POST без перенаправления/GET?
Я просматривал его код, и я отметил, что он использовал только P/R/G при успешном представлении. Подача формы все равно будет дублироваться при обновлении/повторном просмотре, если она не была успешной. Я отметил это в своем обзоре, но он утверждал, что он не видит выгоды для перенаправления каждый раз, потому что неудачное представление игнорируется. Я отметил, что если пользователь обновляет страницу или пересматривает ее в истории, они все равно получат предупреждение «ПОДТВЕРЖДЕНИЕ ФОРМЫ» в основных браузерах.
Неужели это достаточно повода для перенаправления после каждого POST? Независимо от того, есть ли это, есть ли другая причина перенаправления после POST, даже если представление является идемпотентным (из-за ошибок в форме)? Есть ли причина, по которой вы должны не перенаправлять после отправки формы?
Я лично выдаю 303 после * каждого POST * из браузера, потому что я * никогда не хочу «подтвердить форму повторно отправить», когда-либо. Я сам справимся. Я считаю эту передовую практику, другие, вероятно, не согласятся, так что это не ответ. Один момент в этом, однако, заключается в том, что я обычно использую сеансы, которые упрощают передачу сообщений об ошибках и т. Д. В браузер, что не соответствует REST, поэтому это зависит от ваших требований. – DaveRandom