重复提交的几种情况与应对策略:

2019-03-20  本文已影响0人  LAMYMAY

前端/API调用后端接口,重复提交的几种情况与应对策略:

可能原因:

前台操作的抖动,快速操作,网络通信或者后端响应慢,都会增加后端重复处理的概率。

解决方案

范例github地址

  1. 前段按钮禁用。利用JavaScript做限制防止表单重复提交。

  2. 利用http请求带一个自定义header,利用header携带自定义数据(令牌),在后端解析判断这个自定义数据用于防止表单重复提交。
    具体的做法:2.1 client与server交互过程中,server生成token返回数据给client,要求调用接口的时候验证该token, 注意该token用一次后后端去做失效,这里可以使用redis来做

  3. 数据库做唯一约束。相同数据不允许重复。这个是最有效的防治重复提交的方法了。出现异常,回滚。

  4. 业务上判断。 设置业务状态,在某种状态插入,某种状态下更新,某种状态下不操作,以达到幂等性

  5. 使用Post/Redirect/Get。
    Post/Redirect/Get简称PRG,是一种可以防止表单数据重复提交的一种Web设计模式,像用户刷新提交响应页面等比较典型的重复提交表单数据的问题可以使用PRG模式来避免。例如:当用户提交成功之后,执行客户端重定向,跳转到提交成功页面。

注意:PRG设计模式并不适用所有的重复提交情况,、
比如:
1)由于服务器响应缓慢,用户刷新提交POST请求造成的重复提交。
2)用户点击后退按钮,返回到数据提交界面,导致的数据重复提交。
3)用户多次点击提交按钮,导致的数据重复提交。
4)用户恶意避开客户端预防多次提交手段,进行重复数据提交。

上一篇 下一篇

猜你喜欢

热点阅读