2012-08-28 69 views

回答

5

是的。它應該發送一個實體或重定向!

(對不起,舊的編程笑話有時會出來)。

這實際上取決於你是否可以有意義地給GET一些東西,這是有道理的。

例如:我買了一些東西,我得到一個頁面,上面寫着「謝謝你,yadda yadda訂單號,收據,yadda」。

這應該是一個303請參閱其他重定向,以便我獲取帶有該信息的頁面。我可以將其加入書籤供以後使用,刷新只是刷新GET。快樂的時光。

雖然有些時候,只有立即響應,如果它們刷新,然後重複實際操作,並且書籤沒有意義,這應該不是重定向。

大多數情況下,目標是儘可能減少後者。如果你必須將它們返回到表單,因爲失敗 - 沒有人想要一個失敗表單的書籤,他們想要修復需要修復的東西,並且繼續使用它。

請注意,許多服務器端系統(ASP等)在從POST重定向時使用302,這嚴格意味着它會再次POST,但幾乎沒有瀏覽器。取而代之的,是清晰的:

  1. 如果您想再次重定向POST,所以POST去不同的URI - 也沒有,有其他問題 - 但如果你真的真的要的話307
  2. 如果你想用GET來跟蹤一個POST來解釋結果,那麼它就是303.它毫不含糊地表示「現在做一個GET」。
+0

很棒的細節和一般的好信息。 –

4

是的,redirect after POST是避免這種情況的良好習慣。

+0

如果用戶單擊瀏覽器上的返回按鈕,將發生重複表單提交。 – towry