十分鐘內學會 避免用戶刷新致使重複POST提交

Question 
在Web應用中,採用POST提交信息是很是常見的,然而若是目標頁面打開得太慢,用戶就可能會刷新頁面,這時候以前已經提交過的信息就會被重複提交。即便用戶成功打開了POST提交目標頁,以後他經過連接導航到別處了,再退回到POST提交目標頁時仍可能會重複提交頁面(例如由於瀏覽器緩存已失效)。並且,只要碰到重複POST提交的場景,瀏覽器就會問用戶是否確認重作此操做,用戶並不必定能正確理解重作意味着重作什麼,瀏覽器又不容許網站向用戶解釋清楚,因此這屬於很是不友善的設計。那麼咱們應該如何避免用戶刷新帶來的重複提交呢? 

Answer 
有一種最簡單的模式可以解決這個問題,叫作PRG,也就是Post-Redirect-Get。在用戶提交信息後,咱們不要在POST提交的目標URL返回結果頁面,而返回一個302將瀏覽器重定向到真正的結果顯示頁,而後瀏覽器經過GET去獲取那個頁面。 

這樣作的話,用戶刷新結果頁,或者經過歷史記錄回到該頁面,都不會致使瀏覽器要從新進行POST,天然也就不會出現煩人的是否重作對話框了。而對於你來講,也有效避免了用戶重複提交信息的可能性。
相關文章
相關標籤/搜索