日期:2014-05-18  浏览次数:20717 次

如何限制IE浏览器Back键功能
需求:
        网站包含两个主要的页面:login.jsp和retrieve.jsp。用户在login.jsp输入用户名和密码,retrieve.jsp页面根据用户名密码来显示内容。

        要求用户访问retrieve.jsp后,如果跳转到其他非本站点页面,比如新浪首页后,按IE浏览器上的Back按钮,retrieve.jsp要报错,不可以显示刚才的内容。

        服务器端我用的是tomcat,下面是测试的日志,我打印出了request的相关参数:
==============   Login   Page   =============
sessionid=3D73200BD37C20B6E660842DD78BBDB5
previous   url:null

==============   retrieve   page   ===========
sessionid=3D73200BD37C20B6E660842DD78BBDB5
Attributes:
Parameters:
headers:
accept:image/gif,   image/x-xbitmap,   image/jpeg,   image/pjpeg,   application/x-shockwave-flash,   application/vnd.ms-excel,   application/vnd.ms-powerpoint,   application/msword,   */*
referer:http://10.10.8.254:8080/mmvd/kevin/
accept-language:zh-cn
accept-encoding:gzip,   deflate
user-agent:Mozilla/4.0   (compatible;   MSIE   6.0;   Windows   NT   5.1;   SV1)
host:10.10.8.254:8080
connection:Keep-Alive
cache-control:no-cache
cookie:JSESSIONID=3D73200BD37C20B6E660842DD78BBDB5

==============   retrieve   page   ==================
sessionid=3D73200BD37C20B6E660842DD78BBDB5
Attributes:
Parameters:
headers:
accept:*/*
referer:http://10.10.8.254:8080/mmvd/kevin/
accept-language:zh-cn
accept-encoding:gzip,   deflate
user-agent:Mozilla/4.0   (compatible;   MSIE   6.0;   Windows   NT   5.1;   SV1)
host:10.10.8.254:8080
connection:Keep-Alive
cookie:JSESSIONID=3D73200BD37C20B6E660842DD78BBDB5


稍微解释一下:

1.login.jsp输入了用户名密码

2.第一次出现retrieve   page是用户正常登陆时的日志

3.第二次是跳转到www.sina.com.cn后,用back键回到retrieve.jsp时的日志。

问题:
        可以看到,通过两种方式访问,session   id,   referer等主要参数都是一样的。而且在这种条件下,没有办法将session销毁。该如果解决这个问题呢?

------解决方案--------------------
用struts,提交给action之后 后退就会提示了
------解决方案--------------------
禁止IE缓存,后退会显示页面失效
response.setHeader( "Pragma ", "No-cache ");
response.setHeader( "Cache-Control ", "no-cache ");
response.setDateHeader( "Expires ", 0);
------解决方案--------------------
能否这样呢,在unload事件中连接服务器,服务起记录用户要离开页面了,如果下一次连接时超过某个时间了(如3秒),则说明用户用户访问过别的网站了。
------解决方案--------------------
写一个check.jsp页面,然后自己网站的所有页面去include它,在check.jsp中校验session中的控制变量,这样自己网站就能用back了
------解决方案--------------------
这么easy的问题,这么多同学没有答道点子上。easy的问题,就要用easy的方法解决嘛,如下:

新建一个autoJump.jsp文件。看名字就知道了,自动跳转啊。。。

function jump()
{
**************;
document.location.href=urls;
}

然后body中,onLoad= "jump(); "

Game Over.