十分鐘內(nèi)學(xué)會(huì) 避免用戶刷新導(dǎo)致重復(fù)POST提交
更新時(shí)間:2009年08月03日 23:47:56 作者:
在Web應(yīng)用中,采用POST提交信息是非常常見(jiàn)的,然而如果目標(biāo)頁(yè)面打開(kāi)得太慢,用戶就可能會(huì)刷新頁(yè)面,這時(shí)候之前已經(jīng)提交過(guò)的信息就會(huì)被重復(fù)提交。
Question
在Web應(yīng)用中,采用POST提交信息是非常常見(jiàn)的,然而如果目標(biāo)頁(yè)面打開(kāi)得太慢,用戶就可能會(huì)刷新頁(yè)面,這時(shí)候之前已經(jīng)提交過(guò)的信息就會(huì)被重復(fù)提交。即使用戶成功打開(kāi)了POST提交目標(biāo)頁(yè),之后他通過(guò)鏈接導(dǎo)航到別處了,再退回到POST提交目標(biāo)頁(yè)時(shí)仍可能會(huì)重復(fù)提交頁(yè)面(例如因?yàn)闉g覽器緩存已失效)。而且,只要碰到重復(fù)POST提交的場(chǎng)景,瀏覽器就會(huì)問(wèn)用戶是否確認(rèn)重做此操作,用戶并不一定能正確理解重做意味著重做什么,瀏覽器又不允許網(wǎng)站向用戶解釋清楚,所以這屬于非常不友善的設(shè)計(jì)。那么我們應(yīng)該如何避免用戶刷新帶來(lái)的重復(fù)提交呢?
Answer
有一種最簡(jiǎn)單的模式能夠解決這個(gè)問(wèn)題,叫做PRG,也就是Post-Redirect-Get。在用戶提交信息后,我們不要在POST提交的目標(biāo)URL返回結(jié)果頁(yè)面,而返回一個(gè)302將瀏覽器重定向到真正的結(jié)果顯示頁(yè),然后瀏覽器通過(guò)GET去獲取那個(gè)頁(yè)面。
這樣做的話,用戶刷新結(jié)果頁(yè),或者通過(guò)歷史記錄回到該頁(yè)面,都不會(huì)導(dǎo)致瀏覽器要重新進(jìn)行POST,自然也就不會(huì)出現(xiàn)煩人的是否重做對(duì)話框了。而對(duì)于你來(lái)說(shuō),也有效避免了用戶重復(fù)提交信息的可能性。
在Web應(yīng)用中,采用POST提交信息是非常常見(jiàn)的,然而如果目標(biāo)頁(yè)面打開(kāi)得太慢,用戶就可能會(huì)刷新頁(yè)面,這時(shí)候之前已經(jīng)提交過(guò)的信息就會(huì)被重復(fù)提交。即使用戶成功打開(kāi)了POST提交目標(biāo)頁(yè),之后他通過(guò)鏈接導(dǎo)航到別處了,再退回到POST提交目標(biāo)頁(yè)時(shí)仍可能會(huì)重復(fù)提交頁(yè)面(例如因?yàn)闉g覽器緩存已失效)。而且,只要碰到重復(fù)POST提交的場(chǎng)景,瀏覽器就會(huì)問(wèn)用戶是否確認(rèn)重做此操作,用戶并不一定能正確理解重做意味著重做什么,瀏覽器又不允許網(wǎng)站向用戶解釋清楚,所以這屬于非常不友善的設(shè)計(jì)。那么我們應(yīng)該如何避免用戶刷新帶來(lái)的重復(fù)提交呢?
Answer
有一種最簡(jiǎn)單的模式能夠解決這個(gè)問(wèn)題,叫做PRG,也就是Post-Redirect-Get。在用戶提交信息后,我們不要在POST提交的目標(biāo)URL返回結(jié)果頁(yè)面,而返回一個(gè)302將瀏覽器重定向到真正的結(jié)果顯示頁(yè),然后瀏覽器通過(guò)GET去獲取那個(gè)頁(yè)面。
這樣做的話,用戶刷新結(jié)果頁(yè),或者通過(guò)歷史記錄回到該頁(yè)面,都不會(huì)導(dǎo)致瀏覽器要重新進(jìn)行POST,自然也就不會(huì)出現(xiàn)煩人的是否重做對(duì)話框了。而對(duì)于你來(lái)說(shuō),也有效避免了用戶重復(fù)提交信息的可能性。
您可能感興趣的文章:
- android中ListView多次刷新重復(fù)執(zhí)行g(shù)etView的解決方法
- javascript下阻止表單重復(fù)提交、防刷新、防后退
- Asp.Net防止刷新重復(fù)提交數(shù)據(jù)的辦法
- asp.net 處理F5刷新頁(yè)面重復(fù)提交頁(yè)面的一個(gè)思路
- firefox下jquery iframe刷新頁(yè)面提示會(huì)導(dǎo)致重復(fù)之前動(dòng)作
- JSP刷新頁(yè)面表單重復(fù)提交問(wèn)題解決辦法分享
- 關(guān)于頁(yè)面刷新,事件重復(fù)提交的方法分享
- php環(huán)境下利用session防止頁(yè)面重復(fù)刷新的具體實(shí)現(xiàn)
- asp.net防止刷新時(shí)重復(fù)提交(可禁用工具條刷新按鈕)
- javaweb用戶注銷后點(diǎn)擊瀏覽器返回刷新頁(yè)面重復(fù)登錄問(wèn)題的解決方法
相關(guān)文章
Git建立本地倉(cāng)庫(kù)并上傳到Gitee的詳細(xì)步驟
這篇文章主要介紹了Git建立本地倉(cāng)庫(kù)并上傳到Gitee,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08php/asp/asp.net中判斷百度移動(dòng)和PC蜘蛛的實(shí)現(xiàn)代碼
這篇文章主要介紹了php/asp/asp.net中判斷百度移動(dòng)和PC蜘蛛的實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-09-09簡(jiǎn)單談?wù)凣ET和POST有什么區(qū)別
本文給大家總結(jié)了下get與post的具體區(qū)別,以及網(wǎng)上的那么多答案為什么都是錯(cuò)誤的,非常的實(shí)用,這里推薦給大家2016-06-06Imagenet2012數(shù)據(jù)集下載、介紹(推薦)
最近研究可能會(huì)用到該數(shù)據(jù)集,發(fā)現(xiàn)過(guò)去好多分享的官網(wǎng)下載鏈接已經(jīng)失效,找了很久才找到了網(wǎng)盤(pán)的數(shù)據(jù)集,對(duì)Imagenet數(shù)據(jù)集下載需要的朋友跟隨小編一起看看吧2022-09-09負(fù)數(shù)與二進(jìn)制換轉(zhuǎn)方法
先談?wù)勈裁聪肫疝D(zhuǎn)載一篇這樣的文章。由于寫(xiě)java已經(jīng)有一段時(shí)間了,在使用api上基本上沒(méi)有障礙,但是對(duì)有些基礎(chǔ)知識(shí)老是容易忘記,如二進(jìn)制和十進(jìn)制的一些轉(zhuǎn)換問(wèn)題。在此記錄一下,再次復(fù)習(xí)一下2013-02-02