后端怎么防止重复提交?(常用的做法)

客户端的抖动,快速操作,网络通信或者服务器响应慢,造成服务器重复处理。防止重复提交,除了从前端控制,后台也需要控制。因为前端的限制不能解决彻底。接口实现,通常要求幂等性,保证多次重复提交只有一次有效。对于更新操作,达到幂等性很难。

常用后端防止重复提交方案

  • token

访问请求到达服务器,服务器端生成token,分别保存在客户端和服务器。提交请求到达服务器,服务器端校验客户端带来的token与此时保存在服务器的token是否一致,如果一致,就继续操作,删除服务器的token。如果不一致,就不能继续操作,即这个请求是重复请求。

  • 缓存

request进来,没有就先存在缓存中,继续操作业务,最后删除缓存或者缓存设置生命周期。如果存在,就直接对request进行验证,就不能继续操作业务。

  • 索引

数据库中创建唯一索引,记录每次request请求。添加索引成功,就获取锁,继续操作,最后设置索引失效。添加索引失败,获取锁失败,不能继续操作。

  • Redis的计数器

Redis的计数器是原子操作,不存储请求,又能提升QPS的峰值。每次request请求,若相同请求,计数器+1,否则新建id为key的计数器。如果>1,不能获取锁;如果=1,获取锁,操作,最后删除计数器(删除锁)。

  • Post/Redirect/Get

提交(Post)后执行页面重定向,成功后转到提交成功页面(Get),整个流程才算结束。当刷新页面,或者浏览器前进和后退,都不会引起Post请求的重复提交。这里可以在head中设置control-cache,保存表单信息。这个方法依赖前端限制比较多。

后端怎么防止重复提交?(常用的做法)相关推荐

  1. java订单重复提交_java表单重复提交常用解决办法

    最近在看些基础的东西,顺便做下笔记.相信大家在平时网页使用中,经常会有按钮重复点击,然后点不动刷新,还有当网络延时比较厉害点了没反应在点击的重复提交.为了避免这种情况,总结了一下4点处理方案 表单重复 ...

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

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...

  3. Spring Boot 使用 AOP 防止重复提交

    在传统的web项目中,防止重复提交,通常做法是:后端生成一个唯一的提交令牌(uuid),并存储在服务端.页面提交请求携带这个提交令牌,后端验证并在第一次验证后删除该令牌,保证提交请求的唯一性. 上述的 ...

  4. JAVA_OA(十四)番外:JAVAWEB防止表单重复提交的方法整合(包括集群部署)

    因为自己要用,所以查找了网络上javaweb项目防止表单重复提交的方法,有些部分不太好找,所以整合后贴出来,首先是孤傲苍狼的一部分博客文章,集群部署的解决方案在后面(注意大红字) 原文出处:孤傲苍狼的 ...

  5. java怎么防止表单重复提交_如何防止表单重复提交

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...

  6. 使用Session防止表单重复提交

    JavaWeb学习总结(十三)--使用Session防止表单重复提交 在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提 ...

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

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...

  8. java表单重复提交_JavaWeb防止表单重复提交(转载)

    转载自:http://blog.csdn.net/ye1992/article/details/42873219 在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用 ...

  9. JavaWeb防止表单重复提交

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...

最新文章

  1. 【 FPGA 】组合逻辑中的竞争与险象问题(三)
  2. java 在线答疑系统_基于java 在线答疑系统-需求分析与概念原型
  3. HDU 6047 Maximum Sequence
  4. Java中的局部变量表及使用jclasslib进行查看
  5. 201521123032 《Java程序设计》第8周学习总结
  6. JS 使用正则表达式参考,分组捕获,遍历输出所有匹配结果
  7. CAJ云阅读怎么用,可以修改caj文件吗?
  8. Adobe软件注册机
  9. win10系统电脑IP地址怎么查找,教程来啦,Windows10系统如何查找ip地址
  10. 酒店短视频营销,是酒店获客引流的重点推广手段之一
  11. Disconnected:No supported authentication methods available
  12. cati服务器授权信息无效,CATI简易操作.doc
  13. 利用JS制作抖音同款3D照片墙(three.js)
  14. KCNScrew for Mac(序列号查询工具)
  15. 动物识别系统代码python_动物识别 python 人工智能实验
  16. windows平台连接EVE模拟器中网络设备两种方法
  17. 学号20189220余超 2018-2019-2 《密码与安全新技术专题》第一周作业
  18. CA机构介绍(Certificate Authority 域名SSL证书颁发机构)
  19. 谷哥学术2022年资源分享下载列表 3/20
  20. 多视角人脸正面化生成综述:Multi-view Frontal Face Image Generation: A Survey

热门文章

  1. 2022-2028年中国碘矿行业竞争格局分析及市场需求前景报告
  2. Python:pip 和pip3的区别
  3. Laravel7使用Auth进行用户认证
  4. CentOs7中安装python3.7.6
  5. Python:正则表达式re模块
  6. Windows 安装adb
  7. Caused by: org.gradle.api.InvalidUserDataException: NDK not configured
  8. linux常用命令(转载)
  9. Android初学第36天
  10. java陷阱之自动拆箱