什么情况下,会出现重复提交请求

(1)、

浏览器提交两次请求的问题

今天接到一个BUG,该功能是登陆错误的次数限制。在用户登陆错误后,会提示用户还可以输错X次,但是现在发现每次提示都不是递减的,而是减2.后来调试发现是由于表单提交了两次,所以导致程序的次数会每次减2.OK,问题找到了,那么为什么会出现这个问题呢,后来在网上查资料,发现是form的自动提交使得你提交了两次,这个: <input type="image" src="style/images/button_save.gif" alt="保存草稿" onClick="toSave(publishForm)">
这里type=“image”和type=“submit”时form都会自动提交的,所以你onclick的时候form先提交了,然后执行你的js再提交了。
解决方案,把image改为button就不会了

(2)

chrome浏览器请求发送两次的一种可能性

       今天测试get请求的时候发现一个很奇怪的问题,那就是在chrome浏览器下请求会发送两次。但是在其他浏览器下却表现的很正常。这说明不是程序本身的问题,而是浏览器的问题。

        于是,我一怒之下把所有的扩展程序全禁用了,之后就完全ok了。于是我再把扩展程序一个个启用,最后总算找到了是JSON Formatter Chrome这个扩展程序导致了请求两次的问题。

(3)

超时POST请求的浏览器重试行为不一致    参考:https://www.thinbug.com/q/15155014

(4) nginx 本身是容错的,当一个server超时时,可以自动转到另外一个server,引发重试。

(5)我用ajax调用一个webservice,由于服务耗用时间较长(大约20分钟)
我发送一次请求(可以确认是一次)但是在服务端监控到的服务调用却有3次,大约9分150毫秒一次。。。

最初数据量小的时候是没有这个问题的,随着数据量增长,处理时间加长,这个问题才逐渐暴露出来.

(6) 使用httpClient时,本身有重试机制(一般默认三次),这也会导致向服务端请求多次。

(7) 用户点击按钮时,由于抖动,也可能引起请求多次。

原文地址:https://www.cnblogs.com/maohuidong/p/14109439.html