【问题标题】:Multiple HTTP POST request when user only clicked once用户仅单击一次时的多个 HTTP POST 请求
【发布时间】:2021-07-06 23:28:44
【问题描述】:

我们对 http 引荐来源和响应有一个奇怪的情况。
我们的应用程序是一个带有 WEB 和 EJB 项目的 J2EE。多年来工作良好。

最近,从一个特定位置,当用户单击提交时,我们的 EJB sysout 拾取到有多个提交(POST 请求)导致空指针的跟踪。我们的按钮被设计为在被点击后被禁用。我们不确定后续请求如何发生。在这个问题的模拟中,我们点击一​​次,系统中只有一个用户。

因为这只发生在我们从特定 ISP 连接时。我们没有遇到来自其他 ISP 位置的多个请求。因此,我们怀疑 ISP 可能无意中触发了重新提交。但我们不确定。我们还能做些什么来追踪这个问题的根本原因。

感谢您的帮助。

4 月 12 日更新

我们已经安装了 wireshark 来追踪来自浏览器端的信号。我们注意到浏览器关注点在每 11 或 12 分钟后进行一次“重试”。这是正常的浏览器行为吗?

【问题讨论】:

  • 也许你做错了什么?我们需要查看代码。这个问题是笼统的,目前无法回答。
  • 谢谢@adam。我们通过创建一个除了循环 30 分钟什么都不做的代码来复制这种情况。然后我们用 JUNITEE 调用触发调用。这将问题与我们的代码或 UI 隔离开来。从那个特定的位置,我们观察到 6 个电话。奇怪的是,系统超时后,电话竟然还在继续。我们正在查看 WAS IHS 插件的配置。但不太确定要寻找什么。有401错误的痕迹。

标签: apache http networking servlets service-provider


【解决方案1】:

我认为我们已经找到了问题的原因。这是由https://blogs.oracle.com/ravello/beware-http-requests-automatic-retries解释的

这是 HTTP 规范中的内容 “如果 HTTP/1.1 客户端发送的请求包括请求正文,但不包括期望请求头字段,期望为“100-继续”,并且客户端未直接连接到 HTTP/1.1 源服务器,如果客户端在从服务器接收到任何状态之前看到连接关闭,客户端应该重试请求。W3 超文本传输​​协议 -- HTTP/1.1

【讨论】:

    猜你喜欢
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    相关资源
    最近更新 更多