如何防止页面重复提交,经典问题之一

PaddleOCR多进程GPU推理实战:200万图片高效处理方案 本文详细介绍了PaddleOCR多进程GPU推理在高效处理200万张图片OCR任务中的实战方案。通过优化GPU利用率、多进程并发和关键参数调优,实现了从单进程3000张/小时到8进程3万张/小时的性能飞跃,为大规模OCR处理提供了可靠解决方案。 阅读详情

在这里插入图片描述

前言 :

先列出部分场景需要用到防止表单重复提交的,一直该场景针对有对数据库进行修改/添加操作的请求,对查询请求也进行防止重复提交也可以起到保护链接数据库的作用。

面临场景 :

金融项目的扣款场景,如果用户购买某支基金,在页面双击或者疯狂点击购买,按照正常的逻辑来说应该只生成一次购买请求,应该在前端/后端把它重复的请求过滤掉,
这样的场景下可以只做前端或者后端或者前后端结合的过滤,但是比如,面对电商平台购买秒杀商品的场景,用户不断的发送秒杀请求,但是最终只要生成一次用户的订单,这时就只能用后端来处理防止重复生成订单了
再比如下单寄快递,如果一个寄一个物件因为用户重复提交订单页面导致生成很多订单号这也是不合理的
总之,防止页面重复提交所对应的场景对于金融,和金钱有关的,像开发票,饭店小程序下单等很多场景,如果做不到防止重复提交那在线下使用的时候一定会出现很多棘手的问题,所以说在开发过程中前后端一起结合才能有效起到真正的防止重复提交的作用,至于为什么,具体讲解使用方式时候会再详细分析。

使用方式

第一种 : 用户点击一次之后直接禁用页面的按钮
用Vue举个例子,只要加上disabled属性就可以禁用按钮
好处 : 在前端可以友好的防止用户重新提交请求
坏处 : 如果人家直接通过接口地址来访问,后端无任何措施可以处理,无法真正实现防止重复提交。。。换句话说人家直接穿过前端来攻击你,你却没有任何防备

<el-row>
  <el-button disabled>提交按钮</el-button>
</el-row>

第二种 : 用户点击发送请求后直接重定向到另一个页面
这种用法的前提是:这个按钮完成的请求后要重定向到其他页面,不能用异步的请求来处理
这里是直接在后端返回时用重定向返回就不用代码举例展示了
好处 :什么都不需要考虑,直接把重定向到另一个页面
坏处 :不是每个按钮或者请求都可以做成重定向的。。。如果都可以做成重定向那异步请求如此节省性能的东西岂不是就浪费了

第三种 :在session中存放值,服务端对session值进行校验
这种用法需要在服务器端,生成一个唯一的标识符,将它存入session域里,在发请求的时候带上这个session域里的值,然后在服务器端,获取这次请求的session中的值,与session中的唯一标识符比较,相等说明是首次提交,就处理本次请求,然后将session中的唯一标识符移除;不相等说明是重复提交,就不再处理。
好处 :纯后端进行验证,也能有效防止重复提交
坏处 :对session域带来了负担,如果页面中每个需要进行防止重复提交的按钮都用session域的方式进行防止重复提交,那session域的负担会非常大

第四种 :在数据库里添加约束
在数据库里添加唯一约束或创建唯一索引,防止出现重复数据。这是最有效的防止重复提交数据的方法。
好处 :能够准确地从数据根源上有效防止提交数据
坏处 :发送请求到数据端了才能验证数据有无重复提交。。没有前端直接过滤或者session域校验这样的方式

第五种 :使用Cookie处理
使用Cookie记录表单提交的记录,设置一个Cookie过期的时间。
好处 :不用session,cookie是存储在客户端的,可以减轻开发成本和服务端的压力
坏处 :如果客户端禁止了Cookie,该方法将不起任何作用,正因为这个缺点,几乎不用这样的方式。

总之,使用哪种方式都要有所牺牲,就看哪种方式在使用时更能接受
在这里插入图片描述

深度解析长鑫G5 DRAM工艺的技术逻辑与微缩边界 长鑫存储G5 DRAM平台通过多重图形化、45:1高深宽比电容与外围HKMG技术,突破先进光刻受限瓶颈,在11.95 nm有源区半间距下实现阵列微缩与电容结构优化。其核心意义不在于对标国际节点,而在于系统性解决“尺寸缩小—电荷保持—外围跟进而”三大矛盾,展现国产DRAM在无EUV条件下推进先进制程的工艺整合能力。 阅读详情

相关推荐

逆向分析踩坑记:当Frida在x86模拟器上‘看不见’ARM的so文件时,我们该如何手动定位与验证?

本文探讨了在x86模拟器上使用Frida进行逆向分析时,无法检测到ARM架构so文件的解决方案。通过分析内存映射、Frida的视觉盲区及手动定位技术,提供了兼容层、混合调试和原生ARM环境三种实用方案,帮助逆向工程师突破工具限制,实现精准定位与验证。

weixin_27697385的博客 221

防止表单重复提交的4种方法

后台接口根据这个AddId,服务端就可以进行缓存标记并进行过滤,缓存值可以是AddId作为缓存key,返回内容作为缓存Value,这样即使添加按钮被多次点下也可以识别出来。比如添加请求的表单里,在打开添加表单页面的时候,就生成一个AddId标识,这个AddId跟着表单一起提交到后台接口。,重复做删除请求至少不会造成数据杂乱,不过也有些场景更希望重复点击提示的是删除成功,而不是目标不存在的提示。客户端做某一请求的时候带上识别参数标识,服务端对此标识进行识别,重复请求则重复返回第一次的结果即可。

wei7a7a7a的博客 631

电脑的kernelbase.dll故障怎么处理?kernelbase.dll是什么文件

kernelbase.dll​是一个系统文件,属于Microsoft Windows操作系统的一部分。该DLL(动态链接库)文件包含了许多基本且低级的系统函数,这些函数被Windows上运行的各种程序和进程调用。kernelbase.dll通常与Kernel32.dll紧密相关,它是实现许多Windows API(应用程序编程接口)的封装。这些API涉及到内存管理、输入输出操作、进程和线程管理以及其他许多核心的操作系统功能。

电脑修复君的博客 4533

最简单的6种防止数据重复提交的方法!(干货)

有位朋友,某天突然问磊哥:在 Java 中,防止重复提交最简单的方案是什么? 这句话中包含了两个关键信息,第一:防止重复提交;第二:最简单。 于是磊哥问他,是单机环境还是分布式环境? 得到的反馈是单机环境,那就简单了,于是磊哥就开始装*了。 话不多说,我们先来复现这个问题。 模拟用户场景 根据朋友的反馈,大致的场景是这样的,如下图所示: 简化的模拟代码如下(基于 Spring Boot): `import org.springframework.web.bind.annotation.RequestMap

weixin_48726650的博客 3935

中文实体关系抽取数据集大盘点:从百度Duie2.0到医疗CBLUE,哪个更适合你的NLP项目?

本文全面分析了中文实体关系抽取领域的主流数据集,包括百度DuIE 2.0、医疗CBLUE等,帮助开发者根据项目需求选择最适合的数据集。文章详细对比了各数据集的特点、适用场景及优化策略,为自然语言处理项目提供实用指南。

weixin_29284657的博客 121

Matlab信号处理

Matlab信号处理 需要安装的APP: Signal Analyzer app:提供一个可以在时域和频域可视化、测量、分析和比较信号的工具; Filter Builder和Filter Designer app:可以很方便通过下拉菜单和填写参数的方式来设计和分析数字滤波器; 对于小波分析,Matlab提供了: 1.Wavelet Signal Denoise app:利用离散小波变换对信号去噪; 2.Signal Multiresolution Analyzer app:对信号进行多分辨率的分析和可视化

Huichin_Min的博客 4399

8种方案解决重复提交问题

在我们编程中常见幂等select查询天然幂等delete删除也是幂等,删除同一个多次效果一样update直接更新某个值的,幂等update更新累加操作的,非幂等insert非幂等操作,每次新增一条。

z_ssyy的博客 3996

STM32H750VBT6在Keil5下载报错?三步搞定Flash Download Failed Cortex-M7问题

本文针对STM32H750VBT6在Keil5开发环境中常见的“Flash Download Failed Cortex-M7”下载报错问题,提供了系统性的三步解决方案。核心在于理解该芯片128KB内部Flash的特殊性,并详细指导用户检查更新Device Pack、精确配置Flash下载算法地址(0x08000000, 0x20000)以及进行硬件连接验证,从而快速修复调试器与芯片间的Flash操作协议问题。

weixin_29274969的博客 480

防止表单重复提交的八种简单有效的策略

表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题,比如: 点击提交按钮两次。 点击刷新按钮。 使用浏览器后退按钮重复之前的操作,导致重复提交表单。 使用浏览器历史记录重复提交表单。 浏览器重复的HTTP请求。 用户提交表单时可能因为网速的原因,或者网页被恶意刷新,致使同一条记录重复插入到数据库中,这是一个比较棘手的问题。我们可以

天下熙熙,皆为利来;天下攘攘,皆为利往。 8万+

避坑指南:Livox Mid-360双雷达SLAM配置中,那些官方文档没说的细节(IP设置、话题分离与时间同步)

本文详细解析了Livox Mid-360双雷达SLAM配置中的关键优化点,包括IP设置、话题分离与时间同步等官方文档未提及的细节。通过实战案例和代码示例,帮助开发者解决点云错位、IMU数据混乱等问题,提升SLAM系统的稳定性和精度。特别针对网络架构设计、驱动修改和时间同步机制提供了专业指导。

weixin_29745609的博客 425

FPGA实现Gardner环定时同步:Verilog代码与Testbench实战解析

本文深入解析了在FPGA上实现Gardner环定时同步的完整过程,详细阐述了其非数据辅助的定时误差检测原理。通过Verilog代码实战,展示了内插滤波器、定时误差检测器、环路滤波器和数控振荡器等核心模块的设计,并提供了完整的Testbench验证方法,帮助开发者解决数字通信系统中的时钟同步难题。

gpt4scribbler的博客 576

如何防止重复提交

转载 如何防止重复提交 一、有很多的应用场景都会遇到重复提交问题,比如: 1、点击提交按钮两次。 2、点击刷新按钮。 3、使用浏览器后退按钮重复之前的操作,导致重复提交表单。 4、使用浏览器历史记录重复提交表单。 5、浏览器重复的 HTTP 请求。 二、防止表单重复提交的方法 1、禁掉提交按钮 表单提交后使用 Javascript 使提交按钮disable。这种方法防止心急的用户多次点击按钮。但有...

qq_35125764的博客 1万+

xilinx原语及bank简介

图8是HP bank与HR bank的IO模块,其中PAD是FPGA的金属管脚,IOB是输入、输出引脚的控制模块。此时使用原语就可以只调用需要的组件,不需要去考虑其余组件参数设置,就方便很多,借助此次机会就对IDDR、ODDR、IDELAYE2、ODELAYE2、IDELAYCRTL、ISERDESE、OSERDESE等几个原语做了简要了解,并对原语的各个模式进行了仿真,本文最初是介绍IDDR的,但在介绍IDDR这些原语之前,还需要了解一下7系列FPGA bank的分类和区别,所以就有了本文。

qq_43416206的博客 413

java如何防止重复提交

重复提交 比较常见的重复提交的方式有: 1、多次点击提交按钮;2、刷新等 避免方式:Session防止令牌,交到页面,提交后用页面的令牌和Session比较 编写步骤 1、对要防止重复提交的操作,页面放置服务器Session的Token值  2、提交到后台后做验证 @RequestMapping("/add") public void add(HttpServletReque

mibing1912的博客 2万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

防止表单重复提交

在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交。 表单重复提交的的常见应用场景 场景一:在网络延迟的情况下让用户多次点击submit 按钮导致用户重复提交 场景二:表单提交后用户点击【刷新】按钮导致用户重复提交 场景三:用户提交表单后 ,点击浏览器的【后退】按钮回...

weixin_43726822的博客 1645

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

防止页面的重复提交,刷新

总结: 重复提交、重复刷新、防止后退的问题以及处理方式 一。前言你在任何一个比较专业的BBS都会看到这样的问题,即使你Google一下,也会发现有很多的人在关注和询问,但大家给出的解决方法却都是千差万别,(有的人主张采用脚本来解决;有的则想重定向到别的页面;有的则将此问题提升到Token的角度)为什么会有如此大的差异呢?二。问题场景首先,我们应该先了解为什么要处理这样的问题?或者专业一点就

专栏 886

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

php页面防止重复提交

发布:JB01 来源:脚本学堂 【大中小】 本文介绍下,在php编程中,防止页面重复提交的方法,包括提交按钮置disabled、过期时间法、token销毁法等,有需要的朋友参考下。本文原始链接:http://www.jbxue.com/article/13992.html 本节内容: php防止页面重复提交 说是php中防止页面的重复提交,其实还说到了js代码...

dingjuzhi9179的博客 194

使用token来防止页面重复提交

 在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交。 一、表单重复提交的常见应用场景 有如下的form.jsp页面 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF...

weixin_42391884的博客 669

Java防止页面刷新重复提交

Java防止页面刷新重复提交,看了网上的,有几种方法: 1、 在你的表单页里HEAD区加入这段代码: <META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, m...

heima201907的博客 793

JSP页面刷新防止重复提交

看了网上的,有几种方法:  1 在你的表单页里HEAD区加入这段代码:        2  生成一个令牌保存在用户session中,在form中加一个hidden域,显示该令  牌的值,form提交后重新生成一个新的令牌,将用户提交的令牌和session  中的令牌比较,如相同则是重复提交  3  在你的服务器端控件的代码中使用Response.Redirect("selfPa

u010002783的专栏 647

防止刷新或后退页面重复提交表单

刷新或后退页面会引起重复提交表单,为了避免这个头疼的问题发生,有几种方法可以实现。网上已经有很多实现的方式的思路,比如提交后禁用按钮、重定向和令牌,但前两种方式有时候不起作用或者说没有“安全感”,我觉得最好的实现方式应该是通过生成令牌(随机字符串)的方式由后端控制。 简单说下思路: 1.在呈现表单页面的时候,需要一个隐藏字段input,该值是后端随机生成的一个字符串(令牌)。该令牌存放在Ses...

後雪寒的专栏 6244

asp.net 防止页面重复提交

<!--google_ad_client = "pub-4490194096475053";/* 内容页,300x250,第一屏 */google_ad_slot = "3685991503";google_ad_width = 300;google_ad_height = 250;//--><script type="text/javascript"src="

管子(zero)的杂乱空间 1096

php 页面重复提交,防止php页面重复提交你做好准备了吗?

本文介绍下,在php编程中,防止页面重复提交的方法,包括提交按钮置disabled、过期时间法、token销毁法等,有需要的朋友参考下。本文原始链接:http://www.codepearl.com本节内容:php防止页面重复提交说是php中防止页面的重复提交,其实还说到了js代码防止重复提交的方法。1、提交按钮置disabled当用户提交后,立即把按钮置为不可用状态。这种用js来实现。提交前:代...

weixin_39962770的博客 536

Asp.net防止页面重复提交

<br />      利用判断__VIEWSTATE防止页面重复提交,废话不多说,直接贴代码:<br />初始定义变量<br /> private static string Flag__ViewState;<br /> protected void Page_Load(object sender, EventArgs e)<br />        {<br />             if (!IsPostBack)<br />            {<br />                F

Airch的专栏 1204

JSP 防止重复提交 防止重复刷新 防止后退问题以及处理方式

本文出处:http://hi.baidu.com/newfys/blog/item/7b8d6851ebbce41f377abe20.html 一。前言 你在任何一个比较专业的BBS都会看到这样的问题,即使你Google一下,也会发现有很多的人在关注和询问,但大家给出的解决方法却都是千差万别,(有的人主张采用脚本来解决;有的则想重定向到别的页面;有的则将此问题提升到Toke

711

刷新页面防止重复提交

using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using...

dianbogui8494的博客 163
上一篇: Java程序员必须掌握的Oracle关于listagg() WITHIN GROUP()行转列函数的使用
下一篇: Java程序员如何理解并使用RabbitMQ(一),从底层出发讲解MQ消息中间件的经典的七种工作模式
瓦坎达forever
博客等级 码龄7年 143粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值