gpt4 book ai didi

http - 浏览器如何处理 HTTP keepalive 竞争条件?

转载 作者:可可西里 更新时间:2023-11-01 15:05:47 26 4
gpt4 key购买 nike

HTTP keepalive 机制中存在一个已知的竞争条件:

据我了解,我需要我的 HTTP 客户端的超时时间比我的 HTTP 服务器短,或者在获取 TCP-FIN 或 TCP-RST 时重试。

我的问题是,今天的网络浏览器如何,use the HTTP keepalive feature ,处理这个竞争条件。他们会重试吗?

我很乐意提供引用资料,谷歌搜索没有找到任何结果。

最佳答案

根据RFC ,在这些情况下,服务器应响应 408 错误代码,向客户端发出连接已在其端关闭的信号。正如 RFC 所述:

If the client has an outstanding request in transit, the client MAYrepeat that request on a new connection.

这意味着由客户端(也就是每个浏览器)决定如何处理 408 响应。有两种选择:

  • 优雅地处理它:自动重试新连接中剩余的请求,这样用户就完全不知道发生的潜在故障
  • 快速失败:通过适当的 408 错误消息向用户显示失败

例如,Chrome 过去似乎一直遵循第二种方法,直到人们开始认为这是一种“错误”行为并转而使用第一种方法。您可以找到与 Chromium 错误相关的错误线程 here和相关代码更改 here .

注意:正如您在链接线程中的最后一封电子邮件中所读到的,只有当某些请求在此连接中成功时,Chrome 才会执行这些重试。因此,如果您尝试通过单个请求重现该请求并返回 408 响应,您会注意到 Chrome 可能不会在这种情况下重试。

关于http - 浏览器如何处理 HTTP keepalive 竞争条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42631273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com