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ù)防措施的辦法。
另外一種禁用后退按鈕的辦法是用客戶(hù)端javascript打開(kāi)一個(gè)沒(méi)有工具條的窗口,這使得用戶(hù)很難返回前一頁(yè)面,但不是不可能。一種更安全但相當(dāng)惱人的方法是,當(dāng)表單提交時(shí)打開(kāi)一個(gè)新的窗口,與此同時(shí)關(guān)閉表單所在的窗口。但我覺(jué)得這種方法不值得認(rèn)真考慮,因?yàn)槲?
們總不能讓用戶(hù)每提交一個(gè)表單就打開(kāi)一個(gè)新窗口。
那么,在那個(gè)我們不想讓用戶(hù)返回的頁(yè)面是否也可以加入javascript代碼呢?在這個(gè)頁(yè)面中加入的javascript代碼可用來(lái)產(chǎn)生點(diǎn)擊前進(jìn)按鈕的效果,這樣也就抵消了用戶(hù)點(diǎn)擊后退按鈕所產(chǎn)生的動(dòng)作。用于實(shí)現(xiàn)該功能的javascript代碼如下所示:
<script language="javascript">
<!--
javascript:window.history.forward(1);
//-->
</script>
同樣地,這種方法雖然有效,但距離“最好的方法”還差得很遠(yuǎn)。后來(lái)我又看到有人建議用location.replace從一個(gè)頁(yè)面轉(zhuǎn)到另一個(gè)頁(yè)面。這種方法的原理是,用新頁(yè)面的URL替換當(dāng)前的歷史紀(jì)錄,這樣瀏覽歷史記錄中就只有一個(gè)頁(yè)面,后退按鈕永遠(yuǎn)不會(huì)變?yōu)榭捎?。我想這可能正是許多人所尋求的方法,但這種方法仍舊不是任何情況下的最好方法。使用這種方法的實(shí)例如下所示:
<A HREF="PageName.htm" onclick="javascript:location.replace(this.href); event.returnvalue=false; ">
禁止后退到本頁(yè)面的鏈接
試試下面這個(gè)鏈接:
禁止后退到本頁(yè)面的鏈接!
這種方法的缺點(diǎn)在于:簡(jiǎn)單地運(yùn)用Response.Redirect將不再有效,這是因?yàn)槊看斡脩?hù)從一個(gè)頁(yè)面轉(zhuǎn)到另一個(gè)頁(yè)面,我們都必須用客戶(hù)端代碼清除 location.history。另外還要注意,這種方法清除的是最后一個(gè)訪問(wèn)歷史記錄,而不是全部的訪問(wèn)記錄。
點(diǎn)擊上面的鏈接,你將打開(kāi)一個(gè)簡(jiǎn)單的HTML頁(yè)面。再點(diǎn)擊后退按鈕,你可以看到這時(shí)打開(kāi)的不是本頁(yè)面,而是本頁(yè)面之前的頁(yè)面?。ó?dāng)然,你必須在瀏覽器中啟用了客戶(hù)端javascript代碼。)
經(jīng)過(guò)一番仔細(xì)的尋尋覓覓之后,我發(fā)現(xiàn)仍舊無(wú)法找出真正能夠完全禁用瀏覽器后退按鈕的辦法。所有這里介紹的方法都能夠在不同程度上、以不同的方式禁止用戶(hù)返回前一頁(yè)面,但它們都有各自的局限。由于不存在能夠完全禁用后退按鈕的方法,所以最好的方案應(yīng)該是:混合運(yùn)用客戶(hù)端腳本和服務(wù)器端腳本。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com