防止表单重复提交,是每个开发人员不可回避的问题。解决方式也有多种,这里记录一下的三种方式。
表单重复提交的三种情况:
(1)、网速较慢,或者延迟高,导致用户多次点击提交按钮。
(2)、回退页面后再次提交。
(3)、点击提交后,再次刷洗页面。
(4)、打开多个tab,然后依次提交。
一 解决方式。
对于情况1,可以提交后将button设置为不可用。或者添加flag,第一次提交将flag设置为true,再次提交是判断flag状态。
对于其他情况可以采取 seesion防止表单重复提交,当请求表单页面时,先生成token,绑定到session中,然后重定向到表单页面,将token放在隐藏域内,再次提交时将token,提交到服务器,用来判断。当token不一致或者不存在,就判断为重复提交。
(* token可以使用时间戳+随机数生成,然后使用md5加密)
这里的解决防止是放在单机应用,不涉及到分布式应用,分布式应用可以参考session 共享以及缓存技术(redis)。