language-agnostic - 使用 HTTP/1.1 Pipelining 发出多个请求

标签 language-agnostic http network-protocols

当使用 HTTP/1.1 流水线时,标准对发出多个请求而不等待每个请求完成有何规定?服务器在实践中做什么?

我问是因为我曾经尝试编写一个客户端,该客户端会针对多个文件发出一批 GET 请求,并记得出现错误。我不确定这是因为我错误地发出了 GET 还是需要等待每个单独的请求完成才能发出下一个 GET

最佳答案

管道就是这样——在一个连接上有多个“正在运行”的请求。

在开放的互联网上,流水线不是很常见,因为少数服务器和中介没有正确处理,弄乱流水线的后果可能很严重(例如,混淆对两个不同用户的响应)。

请记住,只有 HTTP/1.1 支持流水线;如果你有一个 HTTP/1.0 服务器,或者中间有一个 1.0 代理,它可能无法工作。

此外,流水线只能用于 GET 和 HEAD 等“幂等”方法;不允许用于 POST 等。

参见: https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-p1-messaging-09#section-7.1.2.2

关于language-agnostic - 使用 HTTP/1.1 Pipelining 发出多个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2665941/

相关文章:

linux - 什么是 TCP 中的最大段生命周期 (MSL)?

networking - OPENSSL 与 IPSEC

java - FileUtils.copyUrlToFile 支持哪些协议(protocol)?

language-agnostic - 停止代码腐烂

python - 将未知词解析为已知词的有效方法?

在异步调用返回之前发送的 HTTP 响应

.net - 通过 HTTP 记录错误 - 安全隐患

regex - 使用字符串替换来屏蔽字符串的正则表达式

javascript - Javascript 将哪种正则表达式算法用于正则表达式?

http - 如何在 http 下载上实现不活动超时