十分鐘內(nèi)學(xué)會 避免用戶刷新導(dǎo)致重復(fù)POST提交
更新時間:2009年08月03日 23:47:56 作者:
在Web應(yīng)用中,采用POST提交信息是非常常見的,然而如果目標頁面打開得太慢,用戶就可能會刷新頁面,這時候之前已經(jīng)提交過的信息就會被重復(fù)提交。
Question
在Web應(yīng)用中,采用POST提交信息是非常常見的,然而如果目標頁面打開得太慢,用戶就可能會刷新頁面,這時候之前已經(jīng)提交過的信息就會被重復(fù)提交。即使用戶成功打開了POST提交目標頁,之后他通過鏈接導(dǎo)航到別處了,再退回到POST提交目標頁時仍可能會重復(fù)提交頁面(例如因為瀏覽器緩存已失效)。而且,只要碰到重復(fù)POST提交的場景,瀏覽器就會問用戶是否確認重做此操作,用戶并不一定能正確理解重做意味著重做什么,瀏覽器又不允許網(wǎng)站向用戶解釋清楚,所以這屬于非常不友善的設(shè)計。那么我們應(yīng)該如何避免用戶刷新帶來的重復(fù)提交呢?
Answer
有一種最簡單的模式能夠解決這個問題,叫做PRG,也就是Post-Redirect-Get。在用戶提交信息后,我們不要在POST提交的目標URL返回結(jié)果頁面,而返回一個302將瀏覽器重定向到真正的結(jié)果顯示頁,然后瀏覽器通過GET去獲取那個頁面。
這樣做的話,用戶刷新結(jié)果頁,或者通過歷史記錄回到該頁面,都不會導(dǎo)致瀏覽器要重新進行POST,自然也就不會出現(xiàn)煩人的是否重做對話框了。而對于你來說,也有效避免了用戶重復(fù)提交信息的可能性。
在Web應(yīng)用中,采用POST提交信息是非常常見的,然而如果目標頁面打開得太慢,用戶就可能會刷新頁面,這時候之前已經(jīng)提交過的信息就會被重復(fù)提交。即使用戶成功打開了POST提交目標頁,之后他通過鏈接導(dǎo)航到別處了,再退回到POST提交目標頁時仍可能會重復(fù)提交頁面(例如因為瀏覽器緩存已失效)。而且,只要碰到重復(fù)POST提交的場景,瀏覽器就會問用戶是否確認重做此操作,用戶并不一定能正確理解重做意味著重做什么,瀏覽器又不允許網(wǎng)站向用戶解釋清楚,所以這屬于非常不友善的設(shè)計。那么我們應(yīng)該如何避免用戶刷新帶來的重復(fù)提交呢?
Answer
有一種最簡單的模式能夠解決這個問題,叫做PRG,也就是Post-Redirect-Get。在用戶提交信息后,我們不要在POST提交的目標URL返回結(jié)果頁面,而返回一個302將瀏覽器重定向到真正的結(jié)果顯示頁,然后瀏覽器通過GET去獲取那個頁面。
這樣做的話,用戶刷新結(jié)果頁,或者通過歷史記錄回到該頁面,都不會導(dǎo)致瀏覽器要重新進行POST,自然也就不會出現(xiàn)煩人的是否重做對話框了。而對于你來說,也有效避免了用戶重復(fù)提交信息的可能性。
您可能感興趣的文章:
- android中ListView多次刷新重復(fù)執(zhí)行g(shù)etView的解決方法
- javascript下阻止表單重復(fù)提交、防刷新、防后退
- Asp.Net防止刷新重復(fù)提交數(shù)據(jù)的辦法
- asp.net 處理F5刷新頁面重復(fù)提交頁面的一個思路
- firefox下jquery iframe刷新頁面提示會導(dǎo)致重復(fù)之前動作
- JSP刷新頁面表單重復(fù)提交問題解決辦法分享
- 關(guān)于頁面刷新,事件重復(fù)提交的方法分享
- php環(huán)境下利用session防止頁面重復(fù)刷新的具體實現(xiàn)
- asp.net防止刷新時重復(fù)提交(可禁用工具條刷新按鈕)
- javaweb用戶注銷后點擊瀏覽器返回刷新頁面重復(fù)登錄問題的解決方法
相關(guān)文章
php/asp/asp.net中判斷百度移動和PC蜘蛛的實現(xiàn)代碼
這篇文章主要介紹了php/asp/asp.net中判斷百度移動和PC蜘蛛的實現(xiàn)代碼,需要的朋友可以參考下2015-09-09Imagenet2012數(shù)據(jù)集下載、介紹(推薦)
最近研究可能會用到該數(shù)據(jù)集,發(fā)現(xiàn)過去好多分享的官網(wǎng)下載鏈接已經(jīng)失效,找了很久才找到了網(wǎng)盤的數(shù)據(jù)集,對Imagenet數(shù)據(jù)集下載需要的朋友跟隨小編一起看看吧2022-09-09