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


    (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) 用户点击按钮时,由于抖动,也可能引起请求多次。

  • 相关阅读:
    mysql安装
    Python中的 _init__和 _new__的区别
    MySQL系列
    彻底解决编码问题
    人生三问之前后端分离是什么鬼?
    什么是内存泄漏?什么是内存溢出?
    目录
    虚拟环境的使用
    如何为Redis中list中的项设置过期时间
    Redis分布式锁的python实现
  • 原文地址:https://www.cnblogs.com/maohuidong/p/14109439.html
Copyright © 2020-2023  润新知