HTTP“Accept”请求头中的“q”值的目的是什么?

29

我使用Firefox发起了一个HTTP请求,现在请求头如下所示:

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

不过我很好奇 q=0.9,*/*;q=0.8 是什么意思。


1
它指定了与特定编码相关联的质量。请参阅标准 - David Schwartz
1
可能是Accept HTTP头中的q = 0.5是什么?的重复问题。 - Sphinxxx
4个回答

25

每个媒体范围都可以跟随一个或多个 accept-params,以 "q" 参数开头表示相对质量因素。第一个 "q" 参数(如果有的话)将媒体范围参数与 accept-params 分离。质量因素允许用户或用户代理使用从 0 到 1 的 qvalue 比例尺度指示对该媒体范围的相对偏好程度。默认值为 q=1。

相关信息请参考此处

这里也可以找到一个不错的解释:链接


18

Accept头列表首先在,处分割,然后对每个条目的附加参数在;处进行拆分。因此,你的示例中的列表将被拆分为text/htmlapplication/xhtml+xmlapplication/xml;q=0.9*/*;q=0.8。 每个条目上的q=参数指示服务器对该媒体类型的偏好程度。如果缺少它(如前两个条目),则默认为其最大值1。 最后一个条目*/*;q=0.8表示服务器最终可以接受任何内容类型,但会比列出的其他类型更不可取。否则,服务器可能会决定不发送任何内容,因为客户端无论如何都不会“接受”它。


3

Q值始终是从零到一的数字,表示相对质量值。默认的Q值为1.0。

因此,具有0.9的Q值的内容比具有0.6的Q值的内容更受欢迎。


2

补充@Robin479正确的回答,问题中的接受头等同于:

Accept:
text/html;q=1,
application/xhtml+xml;q=1,
application/xml;q=0.9,
*/*;q=0.8

注意: 换行符只是为了更好的可读性。


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