Web 防止表单重复提交

Posted wjq2017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web 防止表单重复提交相关的知识,希望对你有一定的参考价值。

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

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

  演示动画如下:

技术分享图片

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

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

 

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

  演示动画如下:

技术分享图片

  

  通过Session防止表单重复提交

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

  生成Token和验证过程如下:

  技术分享图片

  技术分享图片

  

  参考资料

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

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

以上是关于Web 防止表单重复提交的主要内容,如果未能解决你的问题,请参考以下文章

防止表单重复提交

如何防止表单的重复提交

防止表单重复提交

防止表单重复提交

防止表单重复的常用几种方式

.net mvc如何防止用户后退,现在保存订单后能回到订单页面重复提交,如何能防止后退