asp.net 防止用戶(hù)通過(guò)后退按鈕重復(fù)提交表單
2024-07-10 12:38:25
供稿:網(wǎng)友
防止用戶(hù)通過(guò)后退按鈕重復(fù)提交表單
<%
response.Buffer=true
response.Expires=0
response.ExpiresAbsolute=now()-1
response.CacheControl="no-cache"
%>
response.Buffer=true的意思就是指明輸出頁(yè)面是否被緩沖,當(dāng)屬性值為T(mén)rue時(shí),服務(wù)器將不會(huì)向客戶(hù)端發(fā)送任何信息,直到所有程序執(zhí)行完或者遇到
<% Response.Flush %>或<% Response.End %>
語(yǔ)句,才會(huì)釋放緩沖區(qū)的信息。
Expires 屬性
Expires 屬性指定了在瀏覽器上緩沖存儲(chǔ)的頁(yè)距過(guò)期還有多少時(shí)間。如果用戶(hù)在某個(gè)頁(yè)過(guò)期之前又回到此頁(yè),就會(huì)顯示緩沖區(qū)中的版本
語(yǔ)法
Response.Expires [= number]
參數(shù)
number
距過(guò)期還有多少分鐘。將此參數(shù)設(shè)置為 0 可使緩存的頁(yè)立即過(guò)期。
注釋
若此屬性在一頁(yè)上設(shè)置了多次,則使用最短的時(shí)間。
應(yīng)用于
Response 對(duì)象
Response.expires=0也表示立即過(guò)期,但如果client和server不在一個(gè)時(shí)區(qū)或者client的時(shí)間早于server上的時(shí)間,則不能立即過(guò)期。所以用負(fù)數(shù)或者用Response.ExpiresAbsolute=now()-1來(lái)表示立即過(guò)期,response.expires=1表示在1分鐘后過(guò)期。
asp中Response.ExpiresAbsolute=now()-1
在asp頁(yè)面中,通常會(huì)有這樣的設(shè)置。
Response.ExpiresAbsolute=now()-1‘設(shè)置過(guò)期時(shí)間的絕對(duì)值為當(dāng)前時(shí)間-1,即出來(lái)后就過(guò)期了
這是因?yàn)槟J(rèn)情況下,瀏覽器將頁(yè)面先載入緩存,然后才顯示出來(lái).通過(guò)上述設(shè)置,使瀏覽器對(duì)頁(yè)面不進(jìn)行緩存,所以當(dāng)用戶(hù)點(diǎn)"后退"后,由于頁(yè)面沒(méi)有緩存,所以瀏覽器只能再次通過(guò)向服務(wù)器發(fā)出HTTP請(qǐng)求來(lái)得到頁(yè)面,這樣就實(shí)現(xiàn)了限制了用戶(hù)對(duì)同一網(wǎng)頁(yè)進(jìn)行多次操作。
asp中Response.Expires = -1
一般情況下,當(dāng)用戶(hù)請(qǐng)求WEB服務(wù)器時(shí),服務(wù)器把請(qǐng)求回復(fù)給客戶(hù)端。在客戶(hù)端,瀏覽器把緩存作為一種加快速度的策略,就是當(dāng)請(qǐng)求時(shí)先檢查緩存的情況,如果有就直接調(diào)緩存了,而不請(qǐng)求服務(wù)器了。
在WEB程序設(shè)計(jì)中,有時(shí)為了防止重復(fù)的提交或者嚴(yán)格的次序等,必須讓用戶(hù)的數(shù)據(jù)立即在使用后就過(guò)期,當(dāng)用戶(hù)后退時(shí)就顯示過(guò)期而不能繼續(xù)使用。也算是為安全考慮的吧。
一般,response.expires寫(xiě)在頁(yè)面的最上端,后面跟的是一個(gè)時(shí)間,就是過(guò)期的時(shí)間,0表示立即過(guò)期。
asp中對(duì)瀏覽器緩存的設(shè)置
Response.CacheControl = "no-cache"
設(shè)置不緩存在臨時(shí)文件中.本句是指,上網(wǎng)時(shí)看到的圖片通常在internet的
接下來(lái)我們要討論的方法以后退按鈕本身為中心,而不是瀏覽器緩存。這兒有一篇文章Rewiring the Back Button很值得參考。不過(guò)我注意到,如果使用這種方法,雖然用戶(hù)點(diǎn)擊一下后退按鈕時(shí)他不會(huì)看到以前輸入數(shù)據(jù)的頁(yè)面,但只要點(diǎn)擊兩次就可以,這可不是我們希望的
效果,因?yàn)楹芏鄷r(shí)候,固執(zhí)的用戶(hù)總是能夠找到繞過(guò)預(yù)防措施的辦法。