我在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的情况下,它会开始抱怨。
有什么可能解决方案的想法吗?在此先感谢:)
答案 0 :(得分:5)
HTTP/2 specification清楚地表明必须将标头转换为小写的先前编码。
根据网络,两个浏览器都会按照HTTP / 2规范接收小写的响应头。
Chrome似乎将标题名称按原样传递给应用程序层,而Firefox尝试恢复Pascal案例,至少对于已知的标题名称。
您可以向任一浏览器提交问题,但我怀疑它是否会得到解决。
真正的问题是客户的缓存库已损坏,应该考虑到HTTP头名称从一开始就不区分大小写这一事实。
根据您使用的技术,您可以执行的操作是编写一个适配器层,在访问损坏的缓存库之前执行标头名称的Pascal大小写转换。