一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - asp.net 防止用戶通過后退按鈕重復提交表單

asp.net 防止用戶通過后退按鈕重復提交表單

2019-06-16 21:17腳本之家 ASP.NET教程

經過一番仔細的尋尋覓覓之后,我發現仍舊無法找出真正能夠完全禁用瀏覽器后退按鈕的辦法。所有這里介紹的方法都能夠在不同程度上、以不同的方式禁止用戶返回前一頁面,但它們都有各自的局限。

防止用戶通過后退按鈕重復提交表單 
<% 
response.Buffer=true 
response.Expires=0 
response.ExpiresAbsolute=now()-1 
response.CacheControl="no-cache" 
%> 
response.Buffer=true的意思就是指明輸出頁面是否被緩沖,當屬性值為True時,服務器將不會向客戶端發送任何信息,直到所有程序執行完或者遇到 
<% Response.Flush %>或<% Response.End %> 
語句,才會釋放緩沖區的信息。 
Expires 屬性 
Expires 屬性指定了在瀏覽器上緩沖存儲的頁距過期還有多少時間。如果用戶在某個頁過期之前又回到此頁,就會顯示緩沖區中的版本 
語法 
Response.Expires [= number] 
參數 
number 
距過期還有多少分鐘。將此參數設置為 0 可使緩存的頁立即過期。 
注釋 
若此屬性在一頁上設置了多次,則使用最短的時間。 
應用于 
Response 對象 
Response.expires=0也表示立即過期,但如果client和server不在一個時區或者client的時間早于server上的時間,則不能立即過期。所以用負數或者用Response.ExpiresAbsolute=now()-1來表示立即過期,response.expires=1表示在1分鐘后過期。 

asp中Response.ExpiresAbsolute=now()-1 
在asp頁面中,通常會有這樣的設置。 
Response.ExpiresAbsolute=now()-1‘設置過期時間的絕對值為當前時間-1,即出來后就過期了 
這是因為默認情況下,瀏覽器將頁面先載入緩存,然后才顯示出來.通過上述設置,使瀏覽器對頁面不進行緩存,所以當用戶點"后退"后,由于頁面沒有緩存,所以瀏覽器只能再次通過向服務器發出HTTP請求來得到頁面,這樣就實現了限制了用戶對同一網頁進行多次操作。 
asp中Response.Expires = -1 
一般情況下,當用戶請求WEB服務器時,服務器把請求回復給客戶端。在客戶端,瀏覽器把緩存作為一種加快速度的策略,就是當請求時先檢查緩存的情況,如果有就直接調緩存了,而不請求服務器了。 
在WEB程序設計中,有時為了防止重復的提交或者嚴格的次序等,必須讓用戶的數據立即在使用后就過期,當用戶后退時就顯示過期而不能繼續使用。也算是為安全考慮的吧。 
一般,response.expires寫在頁面的最上端,后面跟的是一個時間,就是過期的時間,0表示立即過期。 


asp中對瀏覽器緩存的設置 
Response.CacheControl = "no-cache" 
設置不緩存在臨時文件中.本句是指,上網時看到的圖片通常在internet的 


接下來我們要討論的方法以后退按鈕本身為中心,而不是瀏覽器緩存。這兒有一篇文章Rewiring the Back Button很值得參考。不過我注意到,如果使用這種方法,雖然用戶點擊一下后退按鈕時他不會看到以前輸入數據的頁面,但只要點擊兩次就可以,這可不是我們希望的 


效果,因為很多時候,固執的用戶總是能夠找到繞過預防措施的辦法。 
  另外一種禁用后退按鈕的辦法是用客戶端javascript打開一個沒有工具條的窗口,這使得用戶很難返回前一頁面,但不是不可能。一種更安全但相當惱人的方法是,當表單提交時打開一個新的窗口,與此同時關閉表單所在的窗口。但我覺得這種方法不值得認真考慮,因為我 


們總不能讓用戶每提交一個表單就打開一個新窗口。 
  那么,在那個我們不想讓用戶返回的頁面是否也可以加入javascript代碼呢?在這個頁面中加入的javascript代碼可用來產生點擊前進按鈕的效果,這樣也就抵消了用戶點擊后退按鈕所產生的動作。用于實現該功能的javascript代碼如下所示: 
<script language="javascript"> 
<!-- 
javascript:window.history.forward(1); 
//--> 
</script> 
  同樣地,這種方法雖然有效,但距離“最好的方法”還差得很遠。后來我又看到有人建議用location.replace從一個頁面轉到另一個頁面。這種方法的原理是,用新頁面的URL替換當前的歷史紀錄,這樣瀏覽歷史記錄中就只有一個頁面,后退按鈕永遠不會變為可用。我想這可能正是許多人所尋求的方法,但這種方法仍舊不是任何情況下的最好方法。使用這種方法的實例如下所示: 
<A HREF="PageName.htm" onclick="javascript:location.replace(this.href); event.returnvalue=false; "> 
禁止后退到本頁面的鏈接 
   試試下面這個鏈接: 
   禁止后退到本頁面的鏈接! 
  這種方法的缺點在于:簡單地運用Response.Redirect將不再有效,這是因為每次用戶從一個頁面轉到另一個頁面,我們都必須用客戶端代碼清除 location.history。另外還要注意,這種方法清除的是最后一個訪問歷史記錄,而不是全部的訪問記錄。 
  點擊上面的鏈接,你將打開一個簡單的HTML頁面。再點擊后退按鈕,你可以看到這時打開的不是本頁面,而是本頁面之前的頁面!(當然,你必須在瀏覽器中啟用了客戶端javascript代碼。) 

  經過一番仔細的尋尋覓覓之后,我發現仍舊無法找出真正能夠完全禁用瀏覽器后退按鈕的辦法。所有這里介紹的方法都能夠在不同程度上、以不同的方式禁止用戶返回前一頁面,但它們都有各自的局限。由于不存在能夠完全禁用后退按鈕的方法,所以最好的方案應該是:混合運用客戶端腳本和服務器端腳本。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 男人的天堂在线观看入口 | 黄动漫软件车车好快的车车 | 草久网| 亚洲国产剧情中文视频在线 | 午夜精品久视频在线观看 | 九九精品视频在线免费观看 | 国产精品欧美一区二区 | 娇妻被又大又粗又长又硬好爽 | 免费福利资源站在线视频 | 亚洲精品成人a | 日韩国产欧美一区二区三区 | 99视频在线国产 | 国产精品永久免费视频 | 欧美日韩一区二区三区在线观看 | 数学老师扒开腿让我爽快 | 国产清纯白嫩大学生正在播放 | 美女沟厕撒尿全过程高清图片 | 九九九九九九精品免费 | 国产性视频| 日本国产在线视频 | 1024免费永久福利视频 | 奇米影视7777久久精品 | www四虎| 日本精品久久久久久久久免费 | 国色天香社区在线视频免费观看 | 三级黄色片在线免费观看 | 人成午夜免费大片在线观看 | 秋霞一级毛片 | 香蕉久久一区二区三区啪啪 | 欧美精品黑人巨大在线播放 | 国产成人成人一区二区 | 男人天堂色 | 激情婷婷综合久久久久 | 色综合久久天天综合观看 | 女人全身裸露无遮挡免费观看 | 99久久免费视频 | 免费人成网址在线观看国内 | 处女摘花视频 | 男人天堂新 | 三级全黄裸体 | 美女视频在线观看视频 |