我们最近注意到一个问题,即某些用户代理会重复相同的 POST 请求,而用户实际上并没有实际触发它两次。
经过进一步研究,我们注意到只有当请求通过负载均衡器并且服务器花了很长时间来处理请求时才会发生这种情况。数据包捕获会话最终显示负载均衡器在 5 分钟超时后通过向客户端发送 TCP Reset 来断开连接;但是,客户端会自动重新提交请求,无需用户干预。
我们在 Java、Firefox 和 IE 8 的 Apache HTTP 客户端中观察到了这种行为。(我无法安装其他浏览器来测试。)这让我认为这种行为是 HTTP 标准的一部分,但这不是很容易谷歌。
此外,似乎只有当第一个请求通过保持活动的 TCP 连接提交时才会发生这种情况。
这是 HTTP 1.1 协议的一部分,用于处理服务器过早关闭的连接。
http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.4.
我经历过类似的情况,我们在几毫秒内多次发布相同的表格。
通过wireshark捕获的数据包确认了浏览器的重新传输,并且来自服务器的日志表明请求的到达。
此外,进一步调查还发现,F5 等负载均衡器报告了重传行为的发生。因此,也值得与您的负载均衡器供应商核实。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)