【问题标题】:Preserving case of HTTP headers with curl使用 curl 保留 HTTP 标头的大小写
【发布时间】: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


【解决方案1】:

尝试强制 curl 使用 HTTP/1.1 - 它默认为 HTTP/2,spec 声明标头必须为小写。

curl http://example.com --http1.1 -H "Foo: bar"

【讨论】:

  • 投我一票,我已经在这个问题上苦苦挣扎好几天了。
猜你喜欢
  • 1970-01-01
  • 2021-08-22
  • 2011-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-20
  • 1970-01-01
相关资源
最近更新 更多