码迷,mamicode.com
首页 > Web开发 > 详细

Web 防止表单重复提交

时间:2018-01-05 21:54:32      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:处理   客户端   http   nbsp   png   idt   说明   javaweb   src   

  表单重复提交存在如下两种情况:

  1 存在网络延迟的情况下用户多次点击按钮

  演示动画如下:

技术分享图片

  使用JS控制表单只能提交一次。

  例如,表单提交之后将按钮设置为不可用。

 

  2 表单提交后用户点击刷新按钮(forward直接转发页面)

  演示动画如下:

技术分享图片

  

  通过Session防止表单重复提交

  服务器端生成一个唯一的随机标识号(最简单的是根据一个种子作为key生成一个随机数),称为Token(令牌)。同时,当前用户的Session中保存该Token。然后将Token发送到客户端的表单中,使用隐藏域来存储,提交表单时把这个Token提交到服务端,然后在服务端判断提交的Token与服务器端生成的Token是否一致。如果不一致,说明重复提交了;如果不一致,说明需要处理提交的表单,处理完后清除当前用户的Session中保存的Token。

  生成Token和验证过程如下:

  技术分享图片

  技术分享图片

  

  参考资料

  JavaWeb学习总结(十三)——使用Session防止表单重复提交

  《深入分析Java Web技术内幕 修订版》 P282-283

Web 防止表单重复提交

标签:处理   客户端   http   nbsp   png   idt   说明   javaweb   src   

原文地址:https://www.cnblogs.com/WJQ2017/p/8206704.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!