我的一位同事正在努力防止重複表單提交(成功提交後,我們通過電子郵件發送並創建了一個數據庫條目)。如果表單中存在錯誤,提交內容不會成功。POST無重定向/ GET?
我檢討自己的代碼,我注意到,他只用P/R/G上成功提交。如果不成功,表單提交將在刷新/重新訪問時重複。我在我的評論中注意到了這一點,但他認爲他沒有看到每次重定向的好處,因爲不成功的提交被忽略。我注意到,如果用戶刷新頁面或在歷史中重新訪問頁面,他們仍然會在主要瀏覽器中收到「確認表單重新發送」警告。
難道這還不夠的原因,每一個職位後重定向?不管它是否,是否有任何其他理由在POST後重定向,即使提交是冪等的(由於表單中的錯誤)?在提交表單提交後,是否有任何原因應該而不是重定向?
我個人發出303 *後從瀏覽器中的每一個POST *,因爲我*不要*希望有一個「確認的形式重新提交」,永遠。我會自己處理。我認爲這是最佳做法,其他人可能會不同意,所以這不是一個答案。有一點關於這一點,我通常使用會話 - 這使得傳遞錯誤消息等返回到瀏覽器更容易,這不符合REST,所以它取決於您的要求。 – DaveRandom 2011-12-17 16:36:36