【发布时间】:2019-01-07 02:07:35
【问题描述】:
我正在尝试使用 curl 发送带有自定义标头 (curl http://example.com -H "Foo: bar") 的 HTTP 请求,我发现当标头到达时,它已被 curl 小写(上面的 Foo标头接收为foo: bar)
如何保留请求中标头的大小写?
【问题讨论】:
-
HTTP 标头不区分大小写,因此大小写不得对任何说 HTTP 正确的人来说都很重要...
-
@DanielStenberg 除了不是每个人都真正遵循规范,这是这个问题的重点,因为如果你想(需要?)与不遵循规范的人互动,那么你需要不要自己跟随他们,就像他们不跟随他们一样。早于 HTTP 2 的 HTTP 至少保留了大小写,因此,如果您告诉 curl 使用 HTTP 1.1,它将尊重您告诉它设置的标头的大小写。
-
HTTP 从来没有“保留大小写”。它始终只是不区分大小写,但有些客户端会保留或强制使用特殊的大小写。例如 curl 通常传递用户使用的大小写 - 除非 HTTP/2 按规范是小写的。
-
正如我已经说过的 - 并非每个服务器实际上都遵循规范。客户端库没有选项来表示它正在与这样一个损坏的服务器通信,这似乎有点愚蠢。功能请求?
-
现代 curl 不这样做:)(至少 7.80.0 版,2021-11-10 发布不这样做)
标签: curl http-headers