如果加权的HTTP头具有重复值,权重不同,应如何处理?
请求标头的值(例如Accept-Language
,Accept-Encoding
等)具有隐式或显式加权值(例如en; q=0.8
)。如果加权的HTTP头具有重复值,权重不同,应如何处理?
在不太可能发生完整字段值收率暧昧信息,具体地,如果歧义可以解释为任一不能接受的(q=0
)或可接受的,因为一些非零质量值,例如分析得到的值:
Accept-Encoding: gzip; q=0.8, gzip; q=0
应此被解释为:
- 不能接受;
- 可接受;
- 标题无效;
或其他一些选择,也许?
在RFC 7231,对质量的一般section 5.3.1值
重被归一化为范围从0到1,其中 0.001是最优选的,而1是最优选的实数; 0表示“不可接受”。如果没有 “Q” 参数存在, 默认权重为1
和Accept-Encoding
特异性section 5.3.4,第3和第4
开始=>
如果该表示的内容编码是Accept-Encoding字段中列出的 内容编码之一,那么它是 可接受的,除非其伴随有q值为q的值(如在第5.3.1节中定义的 ,q值为0意味着“不可接受”。)
如果多个内容编码是可接受的,则可接受的具有最高非零q值的内容编码是优选的。
说清楚q=0
的意思是“不能接受的”,并且最高非零qvalue是首选,但他们似乎并没有讨论任何可能的不确定性;可能是因为这是不太可能的事件。
开始=“3”>
如果表示的内容的编码是在接受编码字段中列出的 内容编码之一,那么它是 可接受除非它是伴随着一个qvalue为0(如在5.3.1节中定义 ,0 qvalue意思是“不能接受的”。)
如果多个内容编码是可接受的,则可以接受 内容编码具有最高非零q值是首选。
头Accept-Encoding: gzip; q=0.8, gzip; q=0
具有单个内容编码gzip
哪一个是重复具有不同qvalue的。
- 首先,它是伴随着qvalue
0.8
其是“可接受的” - 其次,它是伴随着qvalue
0
这是“不可接受的”。
当我读到的报价规则:看
- 检查内容编码是伴随着零qvalue;如果是这样,那是“不可接受的”;
- 否则,取所有副本的最大q值权重。
所以,我的解释是,下面的两行是等价的:
Accept-Encoding: gzip, gzip;q=0.001, compress;q=0.1, compress;q=0, *;q=0.2, *;q=0.1
Accept-Encoding: gzip;q=1, compress;q=0, *;q=0.2
,并为你的榜样,下面两行是相同的:
Accept-Encoding: gzip; q=0.8, gzip; q=0
Accept-Encoding: gzip;q=0