在HTTP中,相对质量因子是什么意思?

11

大家好,我一直在研究Chrome浏览器在地址栏输入URL时发送的请求头信息。我想知道这些头部信息具体含义是什么:

Accept: application/xml;q=0.9
Accept-Charset: utf-8;q=0.7
Accept-Language: en;q=0.8

这个帖子说这是品质因素,因此Chrome正在表示它接受>=90%品质的application/xml,>=70%品质的UTF-8,以及>=80%品质的英语语言。

这里的90%品质的application/xml,70%品质的UTF-8和80%品质的英语语言到底是什么意思?


2
你链接的答案已经很好地解释了:"Accept: audio/*; q=0.2, audio/basic" 应该被理解为“我更喜欢 audio/basic,但如果在质量打折扣 80% 后没有更好的可用音频类型,就发送任何音频类型。”它展示了客户端对不同类型的偏好。如果只有一个类型可用,那么这个标头可能有点无意义。 - deceze
2个回答

3

相对质量因子这个名字有点具有误导性。
我认为它被用来按照首部值的优先级排序,就像文档所说:

A more elaborate example is

   Accept: text/plain; q=0.5, text/html,
           text/x-dvi; q=0.8, text/x-c   

Verbally, this would be interpreted as "text/html and text/x-c are the preferred media types, but if they do not exist, then send the text/x-dvi entity, and if that does not exist, send the text/plain entity."

在你的例子中很容易决定,因为每个标题只有一个值。


那么这是否意味着对于你的例子,text/plain;q=0.0001, text/html, text/x-dvi;q=0.0002, text/x-c同样等效,因为它是相对的?还是我在这里有什么误解? - Pacerier
1
请注意,在qvalues中不能有超过三位小数。此外,接受的答案似乎是错误的。它与“字符百分比”之类的东西无关。它似乎只是一种排列偏好的方式,特定数字仅表示它们是否比其他数字大或小。 - BPS
根据2014年的https://tools.ietf.org/html/rfc7231#section-5.3.2规定,q值除了排序以外还有特定的含义。 示例            Accept:audio / *; q = 0.2,audio / basic    被解释为“我更喜欢audio/basic,但如果在质量下降80%后仍是最佳可用类型,则发送任何音频类型”。 - Reto Gmür

3

这些头部信息在RFC 2616中有详细解释。

Accept-Charset: utf-8;q=0.7

理解这行代码的关键在于,即使未明确指定,ISO-8859-1也会被默认接受。头部信息表明,“我希望使用ISO-8859-1,但如果使用ISO-8859-1会导致所发送对象质量下降超过30%,我将接受UTF-8。” 我认为这意味着,如果有30%的字符无法放入ISO-8859-1中,则使用UTF-8,但似乎标准并不要求这种解释。
对于你提供的其他示例,由于没有替代方案或默认选项来阻止接受内容的定义,因此质量因素是无操作的。

顺便问一下,identityAccept-Encoding 的默认值吗? - Pacerier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接