首页 文章

HTTP / 2响应标头字段不在Google Chrome中的Pascal Case中

提问于
浏览
1

我在Google Chrome版本55.0.2883.95(64位)和版本Mozilla 50.1.0上访问了相同的网址(由于客户机密而无法透露网址),但Google Chrome和Mozilla浏览器上的响应标头字段不同 .

Google Chrome上的回复是: -

HTTP/2 200 access-control-allow-origin: * content-encoding: gzip content-type: application/json;charset=UTF-8

Headers 字段不在Pascal Case中,但对Mozilla的响应是: -

HTTP/2 200 Access-Control-Allow-Origin: * Content-Encoding: gzip Content-Type: application/json;charset=UTF-8

Headers 字段是Pascal大小写 .

现在我知道这是根据文章RFC2616第4.2节(https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html - sec4.2),它说

“每个 Headers 字段由名称后跟冒号(":")和字段值组成 . Field names are case-insensitive.

但我的客户在他的应用程序上运行了一些自定义缓存库,如果Content-Encoding标头不在Pascal情况下,它会开始抱怨 .

什么可能是一个可能的解决方案?提前致谢 :)

1 回答

  • 4

    HTTP/2 specification清楚地表明必须将标头转换为小写的先前编码 .

    在线路上,两个浏览器都按照HTTP / 2规范接收小写的响应头 .

    看起来Chrome将 Headers 名称按原样传递给应用程序层,而Firefox尝试恢复Pascal案例,至少对于已知的 Headers 名称 .

    您可以向任一浏览器提交问题,但我怀疑它是否会被解决 .

    真正的问题是客户的缓存库已损坏,应该考虑到HTTP头名称从一开始就不区分大小写这一事实 .

    根据您使用的技术,您可以做的是编写一个适配器层,在访问损坏的缓存库之前执行标头名称的Pascal大小写转换 .

相关问题