RFC 7230 , 超文本传输协议(protocol) (HTTP/1.1):appendix 中的消息语法和路由状态:
As a result, clients are encouraged not to send the Proxy-Connection header field in any requests.
为什么是 curl然后在使用代理时发送此 header ?
$ http_proxy=0.0.0.0:8080 curl -v http://google.com
...
> Accept: */*
> Referer:
> Proxy-Connection: Keep-Alive
>
...
我正在使用 curl 7.71.1在 x86_64-pc-linux-gnu 上。附录:这是另一种协议(protocol),但 HTTP/2 明确禁止
Connection
和相关字段,根据 RFC 7540 Section 8.1.2.2
最佳答案
多么棒的问题!谢谢你的提问。
这是网络上的一个例子,其中规范和我们应该做的事情与现实并不真正匹配,如果我们尝试遵循这些书面指南会发生什么!
早在 2016 年,我们(在 curl 项目中)实际上删除了 Proxy-Connection: Keep-Alive
正是出于这个原因,从 curl 请求到代理的 header :这不是必需的,因为协议(protocol)暗示保持事件状态并且规范是这样说的!
然后(在那次改变之后)我们立即收到了一系列错误报告 来自那些代理连接完全中断并且持久连接根本无法工作的人......一旦我们恢复了这个改变,一切都会重新开始工作。
所以也许在 2026 年左右,事情已经发生了足够的变化,所以我们可以再次进行该实验。在那之前,我们将此 header 保留在代理请求中,以便所有那些正在使用的蹩脚的旧代理都不会失效!
万维网是一个疯狂的地方。
关于http - 为什么 curl 发送 Proxy-Connection header ,即使 RFC 似乎不鼓励它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62722430/