现象:
后台完成数据库操作后返回到页面,这时点击浏览器的后退再提交或刷新页面,会导致form表单重复提交
原因:
第一次提交的表单会被缓存到内存中,直到页面下次提交或页面关闭或转向其它页面才消失,在自调用返回时,内存中的数据依然存在,
这时页面中的提交的代码依然可以检测到提交的值,故会产生重复提交的效果
解决方法:
1页面提交后转到其它页面
2提交表单后,提交按钮禁用
3js中设置全局变量,提交后修改该变量的值,依据变量的值判断是否重复提交
4令牌,用户登录后在session中生成一个随机数,然后放入form表单隐藏域中,提交之后,去session中比较,如果相同,
则提交,然后修改session中的该随机数;如果不同,则不提交(该策略还可以控制对某些页面的直接访问)