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

时间:2017-01-19 10:51:55

标签: http http2

我在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

标题字段不在Pascal Case中,但Mozilla上的响应是: -

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

标题字段是Pascal大小写。

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

“每个标题字段由名称后跟冒号(":")和字段值组成。 字段名称不区分大小写。

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

有什么可能解决方案的想法吗?在此先感谢:)

1 个答案:

答案 0 :(得分:5)

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

根据网络,两个浏览器都会按照HTTP / 2规范接收小写的响应头。

Chrome似乎将标题名称按原样传递给应用程序层,而Firefox尝试恢复Pascal案例,至少对于已知的标题名称。

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

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

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