在IE浏览器下运行
<script type="text/javascript" language="javascript">
history.back();
</script>
或者点击IE的“返回”按钮,都会遇到提示信息“警告:网页已经过期”。
造成这个情况的原因,是IE存在“安全预警功能”,不能自动提交表单信息。
基本情况是这样的:
A页面通过提交Post请求-->B页面,B页面再通过某种方式-->C页面,此时点击后退按钮,想要回到B页面,但是由于B页面是由A页面提交的参数决定的,所以为了重新得到B页面,需要重新提交A页面的参数。而这个时候IE浏览器就不能自动提交表单信息,所以出现了“警告:页面已经过期”的提示页面。
解决该问题的方法一,将提交方法改为“Get”。但这样对一些网站的架构影响很大,尤其是Struts 1。中途修改的话,需要改动很多地方。
另外一种法方法是在PHP程序中常用的:
在 Session_start 函数后加入 header("Cache-control: private"); 注意在本行之前你的PHP程序不能有任何输出。
还有基于session的解决方法,在session_start前加上
session_cache_limiter('nocache');// 清空表单
session_cache_limiter('private'); //不清空表单,只在session生效期间
session_cache_limiter('public'); //不清空表单,如同没使用session一般
由此可以看出在JSP程序中也需要设置一下头信息,“Cach-control:private”就可以了。
即在你的网页的最前端加上
<%response.setHeader("cache-control", "private");%>
注意:该行和PHP程序要求一样,在此行之前不得有任何输出。