变更内容

HTTP 协议中,header 是不区分大小写的,Node 一般统一为小写。

urllib 该变更会在最底层发送 http 请求时,把对应的 header key 都转换为小写才发送。

原 urllib 内部的 Content-Length 也会转为小写发送。

影响范围

所有用到 HTTPClient 的请求,如调用 ctx.curl

影响面:理论上没有影响,除非对应的后端处理有问题。

如在 Koa/Egg 里面,不管调用 ctx.get(key) 还是 ctx.headers 都一直是小写。

尽管如此,建议开发者还是需要检索下代码里面有调用到 ctx.curl(url, { header }) 的逻辑:

  • 是否传递了大写的 header key
  • 确认对应的后端逻辑是否判断了大写。

兼容方式

增加了 keepHeaderCase 参数,需要保持大小写的,可以设置下。

还是会转换为小写,故在 beforeRequest 里面取到的还是小写,但最终在发送 http 前一刻,会把用户手动传的 header 的大小写恢复。

变更版本