在网上搜索了很多禁止掉浏览器后退的方法,大都是说禁用缓存或使用JS跳转。其实浏览器的后退前进按钮我们本身是无法控制的,之所以还有要禁止后退的一些功能需要,主要还是存在提交表单、身份验证等应用场景,避免用户重复提交数据等。下面我从几次层面来说明实现禁止掉浏览器后退的效果。
1.客户端JS跳转
如果单只需要在客户端跳转页面,可以直接使用“location.replace('Test.aspx');”,这样页面跳转不会保留之前页面的历史记录,也没有办法后退到之前页面。但我们一般和服务器端交互都会要提交表单,会存在向服务器再POST数据请求,因此这种只使用客户端JS跳转还是不够的。
2.禁止缓存
禁止缓存的作用在于是客户端总是重新获取服务器请求,而不会加载浏览器本地缓存的副本,这在验证登录等场景是非常重要的,比如像输入的验证码,这个应该只能一次有效而不会被缓存。禁止缓存并不能禁止用户进行后退,但浏览器每次会重新请求获取后退到的页面,不再保留用户原来提交表单输入的数据,相当于重新打开页面,只要每次重新验证这样是没有问题的。如果用户尝试使用浏览器中的缓存版本提交数据,IE中会出现“网页已过期”的提示。禁止缓存的代码如下:
<</span>meta http-equiv="Pragma" content="no-cache" />
<</span>meta http-equiv="Cache-Control" content="no-cache" />
<</span>meta http-equiv="Expires" content="0" />
//.Net(C#)禁用后台页面浏览器缓存
Response.Buffer = true;
Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);
Response.Expires = 0;
Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "No-Cache");
3.让后退停在当前页面
通过使用禁掉缓存功能,这样用户即使后退或在历史记录中点击进入到原来的页面,这样也没有问题了。当跳转到新页面时,我们还可以使用个办法让用户点后退按钮也停留在新页面,原理是在新页面打开时再自动刷新一次页面,产生一条浏览页面历史记录,这样再后退也就还是停留在新页面了,新跳转的页面增加的代码如下:
<</span>script type="text/javascript">
var isForward = location.search.indexOf('forward=1') == -1;
if (isForward) {
location = (location.href + (location.search.indexOf('?') == -1 ? '?' : '&') + 'forward=1');
}
//if ('
var isForward = location.search.indexOf('forward=1') == -1;
if (isForward) {
location = (location.href + (location.search.indexOf('?') == -1 ? '?' : '&') + 'forward=1');
}
//if ('
-
主题推荐
- 浏览器 服务器 javascript 验证码 数据
-
猜你在找
<script type="text/javascript"> BAIDU_CLB_SLOT_ID = "117306";</script><script type="text/javascript" src="http://cbjs.baidu.com/js/o.js"></script>
<script type="text/javascript"> //new Ad(4, 'ad_cen'); </script>
核心技术类目
全部主题
Java
VPN
Android
iOS
ERP
IE10
Eclipse
CRM
JavaScript
Ubuntu
NFC
WAP
jQuery
数据库
BI
HTML5
Spring
Apache
Hadoop
.NET
API
HTML
SDK
IIS
Fedora
XML
LBS
Unity
Splashtop
UML
components
Windows Mobile
Rails
QEMU
KDE
Cassandra
CloudStack
FTC
coremail
OPhone
CouchBase
云计算
iOS6
Rackspace
Web App
SpringSide
Maemo
Compuware
大数据
aptech
Perl
Tornado
Ruby
Hibernate
ThinkPHP
Spark
HBase
Pure
Solr
Angular
Cloud Foundry
Redis
Scala
Django
Bootstrap