http - 为什么 curl 发送 Proxy-Connection header ,即使 RFC 似乎不鼓励它?

标签 http curl proxy http-headers keep-alive

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/

相关文章:

sockets - 传输一定数量的数据后 Chrome 挂起 - 等待可用的套接字

java - com.sun.net.httpserver.HttpServer 支持管道吗?

xml - UPnP 架构的 SOAP 实现

wcf - 控制使用 svcutil.exe 生成的 wcf 代理类名

javascript - SAPUi5 文件 uploader 设置 WebKitFormBoundary

html - HTML 表单(GET)中使用的方法与 HTTP GET 不同吗?

java - 如何在Java中使用cURL?

linux - 如何正确地将文件的一行读入数组?

go - 如何在 golang 中传递 http 请求?

configuration - Vs2012无法使用代理连接到Nuget