2013-06-29 27 views
1

我去通http://www.w3schools.com/tags/ref_httpmethods.asp閱讀 大約讀VS post.Here是描述Get和Post請求中的重新加載/歷史行爲?

enter image description here

要清除混亂,我只是走在那裏用戶第1頁上創建客戶方案(與提交按鈕)和 導航到成功頁面(頁面2)。

對於重新加載(說用戶在成功頁面上按F5)點,獲取請求被認爲是無害的,在後請求 「數據將被重新提交」。

我的理解都在請求(GET/POST)中,數據將被重新提交 。所以在客戶場景中,當用戶 在頁面上按F5(無論其帖子還是獲取)時,將創建兩個客戶。所以根據我對 的瞭解,數據將在GET/POST請求和 中重新提交。無任何傷害。請糾正我的理解是否錯誤?

For History point。在GET請求中,「參數保留在瀏覽器歷史記錄」和POST請求 「參數未保存在瀏覽器歷史記錄」中。我的問題是如果請求參數在發佈請求中未保存在 瀏覽器歷史記錄中,那麼成功頁面上的F5點擊複製客戶如何創建。他們是否將 存儲在某個其他位置,而不是發佈請求中的瀏覽器歷史記錄?

回答

0

我會嘗試逐點解釋一點:

關於GET是無害:GET方法是supossed脫冪等,這意味着:給予相同的URL和相同的參數總是應該返回相同結果(用戶= 34,日期= 01-07-2013應該返回相同的頁面),不應該改變任何東西(只做一種帶有「用戶」和「日期」的查詢)。當然,打破這個規則並且實際改變內部狀態(做更新或類似的事情)是很常見的,這種情況就是你提到的(page1 - > page2創建的)。 POST請求沒有這個要求,並且意在改變內部狀態。

關於留在瀏覽器歷史記錄參數:他們真正的意思是,在GET請求參數包含在URL(mysite.com?user=34,date=01-07-2013)等等如果你保存了URL,你也保存參數。在一個POST請求參數中,進入請求的主體而不是URL的一部分;所以你是對的,舊的瀏覽器曾經只存儲URL,現今的瀏覽器已經過優化,將這些POST參數存儲在內部緩存中。

+0

我認爲你的意思是「GET請求沒有這個要求,並且是爲了改變內部狀態。」而不是POST請求沒有這個要求,並打算改變內部狀態。 –

+0

英語不是我的第一語言,所以我會嘗試重新翻譯:GET不應該更改/創建/刪除任何內容。 POST可以改變任何東西 – morgano