一.使用场景
(1)网络延迟的情况下,进行多次提交.
(2)表单提交后用户点击【刷新】按钮导致表单重复提交
(3)用户提交表单后,点击浏览器的【后退】按钮回退到表单页面后进行再次提交.
二.解决办法:token
token工作原理:客户端请求页面时,服务器会通过token标签生成一个随机标识号(专业术语是token),并且将token储存到当前用户的session当中,然后将Token发送到客户端的Form表单中,在Form表单中使用隐藏域来存储这个Token,如果客户第一次表单提交的时候连同这个Token一起提交到服务器端,然后在服务器端判断客户端提交上来的Token与服务器端生成的Token是否一致,如果一致,服务器认为是第一次提交,并且将清除服务器端的这个token值;如果此时再次重复提交,那么客户端发向服务器端的随机数还是之前的那个,而服务器端的随机数则已经发生了变化,两者不同,服务器就认为这是重复提交,进而转向invalid.token所指向的结果页面。
三.代码演示.
参考链接:http://www.cnblogs.com/xdp-gacl/p/3859416.html