网页过期的问题再转一遍,建议斑竹加入精华区

精华|网页|问题

防止使用者按上一頁按鈕
討論區上常有網友問到這個問題, 如何防止使用者按回上一頁按鈕, 為何會問這一個問題? 應該通常是在防止使用者重複執行一個應用程式, 例如資料庫的新增, 如果使用者按了回上一頁, 有可能會造成重複新增資料, 今天這篇文章就要介紹如何 "盡可能" 的防止使用者按回上一頁

伺服端防止快取

首先來看看伺服端的方法, ASP 的 Response 物件提供了幾個網頁快取 (cache) 相關的屬性, 說明如下

屬性 說明
CacheControl 判斷代理伺服器 (Proxy Server) 是否快取 ASP 的輸出結果
Expires 網頁快取的逾期時間
ExpiresAbsolute 指定網頁快取的逾期時間

所以如果你要防止網頁被快取, 你可以這麼做

<%
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
%>

利用這個方法, 使用者還是可以回到上一頁, 但由於網頁並沒有被快取, 所以瀏覽器必須重新向伺服器作 Http 請求, 也就是這個網頁會被重新整理 (Refresh)

用戶端防止快取

你也可以使用用戶端 (Client-side) 的方式,

<html>
<head>
<meta http-equiv="expires" content="0">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="pragma" content="no-cache">
</head>

和伺服端的方法產生的結果是一樣的, 但有幾點要注意

Pragma : 當使用安全連結時才使用 Pragma, 如果在非安全連結使用, 那麼效果和 Expires : -1 是相同的, 也就是這個網頁還是會被快取, 但會立即逾時
meta http-equiv 標籤的 cache-control 並不適用於 Internet Explorer 4, 5 版本
移除工具列

這個方法是在網路上看來的, 有點趣味所以也介紹一下, 做法是這樣的, 利用 window.open 方法來開新視窗, 然後關掉原視窗, 但重點是在開視窗時將工具列移除

<script language="javascript">
<!--
function openWindow(url){
  newpage = window.open(url,'newpage','toolbar=no');
  newpage.focus();
  self.close();
}
//-->
</script>
<a href="javascript:openWindow('nextpage.html');">下一頁</a>

也是一種方法, 但應該很少人會用, 有一點麻煩! 況且按滑鼠右鍵所出現的 Menu 中也有回上一頁的選項, 此法謹防君子不防小人!

使用 location.replace

Javascript location 物件的 replace() 方法會以指定的網址覆蓋瀏覽器目前瀏覽歷史紀錄, 也就是當你用了這個方法, 瀏覽器就會忘掉過去曾經瀏覽的紀錄, 就親像你第一次開啟瀏覽器一樣, 上一頁的按鈕是灰的

你可以這麼做

<a href="Javascript:location.replace('nextpage.html')">下一頁</a>

看起來這大概是目前最好的方法! 不過還是有一些缺點, 因為並不是所有的情況都可以套用, 譬如講當你使用 Response.Redirect 時, 這個方法就派不上用場了!

可以歸納出一個結論, 就是要完全關閉瀏覽器回上一頁的功能是不可能的 (目前的瀏覽器), 唯一能做的是因時因地制宜, 結合以上的方法盡可能的防止使用者按回上一頁!

希望這篇文章對你有幫助!

时间: 2025-01-21 04:34:00

网页过期的问题再转一遍,建议斑竹加入精华区的相关文章

PHP控制网页过期时间的程序

有时我们需要控制主页之类的网页过期时间.但我们比如使用的是Chinacache的CDN,那要怎么样设计才能让他缓存我的内容. 有时我们需要控制主页之类的网页过期时间.但我们比如使用的是Chinacache的CDN,那要怎么样设计才能让他缓存我的内容. 当然,前提要先打开CDN中一个功能reload_into_ims on.这样用户发送过来no-cache也不怕了.因为这样会给给no-cache转成If-Modified-Since .所以我们写程序主要是对If-Modified-Since控制就

用php人工使网页过期

Manually Expiring Web Pages 人工使网页过期 作者: Joe Clark 翻译: detrox After going through a series of pages during a registration process, you don't want the user to be able to go back after the final submit. What can you do to manually "expire" those pa

求教啊,我用winsock获取一个网页的代码,筛选到所有的网页连接,可是再用winsock获取连接的网页却不行!

问题描述 我用winsock获取一个网页(http://www.yellowpages.com.au/search/listingsSearch.do?headingCode=24341&sortByClosestMatch=false&pageNumber=1&region=australia&sortByDetail=true&rankWithTolls=true&currentLetter=&sortByAlphabetical=false&a

大宝玉杨洋:如果让我再演一遍肯定更好

大宝玉扮演者杨洋 善良.顽皮.细腻而热爱生活,这是杨洋给出的关于贾宝玉的几个关键词,他也正是按照这样的理解去演绎新<红楼梦>中的成年宝玉的.现在距离新版<红楼梦>杀青已经将近一年了,该剧正在包括SCTV-5的十个地面频道播出,而成年宝玉杨洋也登场亮相了,昨日,记者带着这些问题采访了成年宝玉的扮演者杨洋.据悉,新<红楼梦>将于明晚在SCTV-5首播谢幕. 学舞 对演戏有利有弊 来自军艺的杨洋学习了整整5年舞蹈,包括古典舞.民间舞和芭蕾舞,他坦承缺乏对影视表演的系统学习,不

深入学习网页技术CSS,再谈div、span的困惑!

css|网页 使用div进行布局,提出div应当用于组织代码结构,现在我们再深入一点,div拥有语义吗? 这个问题前段时间在研究群里曾激烈争论过,当时米随随发问:"什么是语义化WEB,div是什么?"小毅答曰:"DIV表示无意义容器."我说:"否定."然后旁边有人嘀咕:"...又要打起来了."我大笑着进入战斗状态,结果迅速被围攻了.呵呵,总是和主流格格不入的我又一次站在主流的对立面.我还是不赞成将div视为无意义容器.容器这个

网页游戏一囧再囧玩家最不想听到的10句话

2010年的网页游戏市场的热度依然没有减退,越来越多的网页游戏涌入其中,这里面有敷衍了事的快餐游戏,也有有精心打造的精品大作.但是笔者每次看到那些自夸"堪比暴雪,网页魔兽"的游戏的时候,还是被雷得外焦里嫩,体无完肤.面对网页游戏铺天盖地的三分真实,七分虚假的说辞,玩家是否也练就了一身"万花丛中不沾身"的绝技呢? 一."xx游戏,xx美女的最爱" 现在的游戏市场什么吸引人?美女.游戏厂商在宣传的时候最爱打出的就是美女牌,"XX美女最喜欢玩

网页设计经验分享:再谈网易首页的改版

之所以说再谈网易首页的改版,是因为去年临近奥运会的时候,网易首页做过一次改版,奥运会之后网易首页做了一下小调整,调整后的首页让人感到很困惑.今天在没有任何预告的前提下,网易又上线了新首页. 其间有个小插曲是,新首页刚上线后,很多地区突然无法访问网易首页,我访问的时候是服务器返回500. 网易就此次改版的说明是:"本次改版从整体到细节都有一个质的飞跃,新版继承了网易一贯简约.大气.包容的设计品质,达到以用户为中心提高用户体验.促进频道发展的改版设计目的." 此次改版促进频道发展的目的似乎

网页过期的问题

网页|问题 防止使用者按上一頁按鈕 討論區上常有網友問到這個問題, 如何防止使用者按回上一頁按鈕, 為何會問這一個問題? 應該通常是在防止使用者重複執行一個應用程式, 例如資料庫的新增, 如果使用者按了回上一頁, 有可能會造成重複新增資料, 今天這篇文章就要介紹如何 "盡可能" 的防止使用者按回上一頁 伺服端防止快取 首先來看看伺服端的方法, ASP 的 Response 物件提供了幾個網頁快取 (cache) 相關的屬性, 說明如下 屬性 說明 CacheControl 判斷代理伺服

CefSharp.Winforms 3.7,有没有办法在浏览器初始化或加载网页完成之后,再加入该浏览器Add到父容量

问题描述 usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;usingTileBrowserDemo.Custom