2014-03-29 168 views
0

我有關於瀏覽器行爲的以下2個問題。重新發送POST數據

  1. 當我們重新發送使用瀏覽器的刷新按鈕或F5鍵形式,爲什麼瀏覽器再次發送POST數據時,這樣的行爲是不可取的(即再添加到購物車相同的產品)?

  2. 爲什麼在FireFox中點擊「清除最近的歷史記錄」後發送的數據仍然被髮送?

+0

提交重定向到其他頁面後將阻止重新提交... – user1844933

+0

在這種情況下使用ajax –

回答

-1

你做一個POST請求後,瀏覽器保持在的情況下,內存中的信息,他們可以,如果你再次發送刷新頁面。在你的情況下,你來自一個POST請求,所以瀏覽器會問你是否要再次發送POST數據,而你不能避免這種情況。

爲了避免它,您可以將表單添加到不同頁面的操作並處理其中的所有數據。

或者您可以在同一頁面上處理數據,並在處理完所有數據後重定向到新頁面。

希望這有助於..

3

爲什麼當我們重新發送使用瀏覽器的刷新按鈕或F5鍵瀏覽器再次發送POST數據,同時這樣的行爲是不可取的(添加到購物車相同的產品再次,即)?

因爲瀏覽器不知道這是不可取的。它被要求重複最後的請求,所以它會。

爲什麼在F5中我點擊「清除最近的歷史記錄」後,發佈的數據仍然在發送?

因爲請求頁面的詳細信息存儲在與當前頁面相關的某個數據結構以及歷史記錄中。


如果你不想刷新頁面重複一個POST請求,然後使用POST-Redirect-GET pattern

使用302重定向響應POST請求。瀏覽器將對您重定向到的URL發出GET請求。重複該請求將重複GET請求,而不是POST請求。