spe*_*ler 21 browser http keep-alive race-condition
HTTP keepalive机制中存在已知的竞争条件:
据我了解,我需要我的HTTP客户端比我的HTTP服务器具有更短的超时,或者在获取TCP-FIN或TCP-RST时重试.
我的问题是,今天使用HTTP keepalive功能的网络浏览器如何处理这种竞争条件.他们重试了吗?
我很乐意参考,谷歌搜索还没有提出任何建议.
Dim*_*mos 19
根据RFC,在这些情况下,服务器应该响应408错误代码,向客户端发信号通知连接已经关闭.正如RFC所述:
如果客户端在传输中有未完成的请求,则客户端可以在新连接上重复该请求.
这意味着由客户端(也称为每个浏览器)决定如何处理408响应.有两种选择:
例如,似乎Chrome过去一直遵循第二种方法,直到某一点,人们开始将此视为"错误"行为并切换到第一种方式.你可以在这里找到与Chromium bug相关的bug线程,并在此处更改相关的代码.
注意:正如您可以阅读链接主题中的最终电子邮件一样,只有当某些请求在此连接中成功完成时,Chrome才会执行这些重试.因此,如果您尝试使用单个请求重现该请求,并返回408响应,您会注意到Chrome在这种情况下可能不会重试.
| 归档时间: |
|
| 查看次数: |
941 次 |
| 最近记录: |