如何限制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.