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

无参考图像质量评估方法:BRISQUE、RankIQA、DIQA 常用的图像质量评估(IQA)分为无参考和有参考两种类型。常见的有参考图像质量评估方法有PSNR,SSIM以及VMAF。其中vmaf是针对视频来讲的,在它的评价方法里面添加了一些时域信息,如果应用于单张图片,需要做一些处理,如去除时域信息。有参考意味着图像质量是以参考图为基准。基于参考图像都是高清图像的假设,这些评价方法已经广泛应用于图像压缩以及图像传输、拼接之类的处理后图像的质量,假如这张参考图的质量本身就比较渣,那么该评价指标可信度就大大降低。 阅读详情

在这里插入图片描述

前言 :

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

面临场景 :

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

使用方式

第一种 : 用户点击一次之后直接禁用页面的按钮
用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,该方法将不起任何作用,正因为这个缺点,几乎不用这样的方式。

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

保姆级教程:用海康威视老版存储服务器+IVMS-4200搭建本地监控录像(附软件获取与开机自启) 最近在帮朋友搭建一套小型监控系统时,遇到了一个颇具挑战性的问题:手头有几台海康威视网络摄像头,但官方已经下架了配套的存储服务器软件。经过一周的摸索和测试,终于找到了一套可靠的解决方案。本文将完整分享从软件获取到系统稳定运行的全过程,特别适合那些不想额外购买NVR设备,又需要本地存储监控录像的个人用户或小型企业IT管理员。 阅读详情

相关推荐

北航论文模板:解决XeLaTeX中Font shape'TU/SimSun(1)/b/n' undefined(font) using 'TU/SimSun(1)/m/n' instead

北航论文模板:解决XeLaTeX中Font shape ‘TU/SimSun(1)/b/n’ undefined(font) using ‘TU/SimSun(1)/m/n’ instead 问题 问题描述: 在使用北航论文模板时,产生了warning:Font shape 'TU/SimSun(1)/b/n' undefined(font) using 'TU/SimSun(1)/m/n' i...

qq_39560620的博客 1万+

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

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

wei7a7a7a的博客 631

手把手教你用ES8311芯片搞定智能音箱TTS播放(附完整寄存器配置清单)

本文详细介绍了如何使用ES8311音频编解码芯片实现智能音箱TTS播放功能,包括芯片特性、硬件连接、寄存器配置及调试技巧。通过完整的寄存器配置清单和实战经验,帮助开发者快速掌握ES8311在智能音箱中的应用,优化音频输出质量和低功耗设计。

weixin_42567497的博客 558

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

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

weixin_48726650的博客 3935

设备管理器找不到蓝牙?从驱动到BIOS的系统排查指南

在Windows系统中,蓝牙功能依赖硬件、驱动、系统服务三层协同工作。设备管理器作为硬件状态的可视化窗口,当蓝牙设备消失时,往往意味着某一层链路中断。常见原因包括BIOS无线开关关闭、驱动异常、蓝牙支持服务被禁用,或系统文件损坏。排查思路应从基础概念出发,先理解蓝牙设备在设备管理器中的四种隐藏位置,再通过扫描硬件、检查BIOS、重装驱动、修复服务等步骤逐层定位。这一方法不仅适用于Windows电脑,也适用于HC-05、ESP32等嵌入式蓝牙模块,因为硬件、协议栈、应用层的故障逻辑相通。掌握这套技术价值在于减

weixin_33377602的博客 267

NVIDIA显卡驱动历史版本全攻略:从官网隐藏入口到精准下载

本文详细介绍了如何获取NVIDIA显卡驱动历史版本的完整攻略,包括官网隐藏入口的揭秘、精准筛选驱动版本的技巧以及安装避坑指南。特别针对游戏玩家、创作者和老显卡用户提供了实用建议,帮助用户解决驱动兼容性问题,提升显卡性能。

m2n3o4p5的博客 3728

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

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

z_ssyy的博客 3996

基于deepseek本地模型的本地知识库构建

通过以上步骤,你已经成功构建了一个基于 AnythingLLM 和 LM Studio 的本地知识库。这个系统不仅能够高效地存储和检索知识,还能结合强大的语言模型生成准确的回答。你可以根据自己的需求进一步扩展和优化这个系统,比如增加更多的文档格式支持、优化检索算法等。

qq_30178745的博客 1383

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

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

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

unity6000.0.3版本URP下ScriptableRendererFeature如何实现一张自定义贴图效果?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 584

【腾讯小龙虾WorkBuddy专栏04】一文搞懂WorkBuddy的「专家」和「专家团」

WorkBuddy专家与专家团:专业级AI协作解决方案 WorkBuddy的专家(Expert)与专家团(Expert Team)功能颠覆了通用AI的局限性,提供角色化、可交付的专业服务。 核心优势 专家:深度垂直领域的AI顾问,具备人设、方法论、工具链,如全栈开发专家能直接交付完整项目,而非代码片段。 专家团:多智能体协作,自动拆解复杂任务(如竞品分析、全栈开发)并分发给对应角色,并行执行后整合输出,效率提升显著。 使用场景 单专家:解决专业问题(如SQL优化、UI设计)。

AI人人懂 2019

如何防止重复提交

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

qq_35125764的博客 1万+

rk3568 rk628桥片hdmi转lvds

RK628 是瑞芯微全新推出的视频桥接芯片,支持丰富的显示接口,支持高分辨率大屏产品转换需求。基于DRM、FB的显示框架易于使用。 输入信号支持:HDMI、RGB、BT.1120,输出信号支持 HDMI、GVI、Dual LVDS、Dual MIPI、MIPI-CSI、RGB、BT.1120,最高支持4K 60fps 输入/输出转换,并且支持输入到输出 1/4~4倍的缩放。

weixin_35723192的博客 1131

java如何防止重复提交

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

mibing1912的博客 2万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

防止表单重复提交

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

weixin_43726822的博客 1645

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

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

专栏 886

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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、付费专栏及课程。

余额充值