避免回退、重复提交

快乐无极 , 2012/02/24 10:15 , 开发文档 , 评论(0) , 阅读(5962) , Via 本站原创 | |
在开发中,有时候不让用户返回到之前的页面,避免表单重复的提交等。于是就提到了用户缓存过期的问题。在网上搜索的大都是说这样的方法。
在HTML的里面加以下代码
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">

JAVA的:
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires",0);

然而,经测试在火狐浏览器里面,设置这些header全然无效果,根本不会提示什么过期。这不知道是不是火狐的设计缺陷还是啥的。火狐的不认缓存设置这一点是很令人费解的。
万般无效之下,只能在不想要用户返回到的页面中加入一行JS脚本:
window.history.forward(1);
以此来解决问题。这个是告诉浏览器回到它返回时的那一页,以此抵消后退的操作。

当然这只是一个不得已的解决方法,严格来说,每个表单的提交都需要增加一个令牌,然后在服务器端要判断令牌的有效性。那才是根本的解决方案。
Tags: ,
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]