`
robert_liu
  • 浏览: 130285 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

解决“警告:网页已经过期”问题

    博客分类:
  • Java
阅读更多

在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程序要求一样,在此行之前不得有任何输出。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics