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

时间:2012-05-08 10:08:55

标签: http http-headers

我使用Firefox发出了一个http请求。现在请求标题显示如下:

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

但很想知道什么是q=0.9,*/*;q=0.8

4 个答案:

答案 0 :(得分:20)

每个媒体范围可以跟随一个或多个accept-params,从“q”参数开始,用于指示相对品质因数。第一个“q”参数(如果有的话)将media-range参数与accept-params分开。质量因子允许用户或用户代理使用从0到1的qvalue标度来指示该媒体范围的相对优先级。默认值为q = 1

该信息可用here

也可以找到一个很好的解释here

答案 1 :(得分:11)

Accept标题列表首先在,分割,然后在;分割,以获得每个条目的其他参数。因此,示例中的列表会分为text/htmlapplication/xhtml+xmlapplication/xml;q=0.9*/*;q=0.8。 每个条目上的q=参数向服务器指示该媒体类型的优先级。默认值为1的最大值(如果缺少)(如前2个条目中)。 */*;q=0.8的最后一个条目向服务器指示,最终任何内容类型都是可接受的,但不如列出的其他类型更优选。否则,服务器可能决定根本不发送任何内容,因为客户端无论如何都不会“接受”它。

答案 2 :(得分:2)

要添加@ Robin479的正确答案,问题中的接受标题相当于,

接受:
text / html的; Q = 1,
应用/ XHTML + xml的; Q = 1,
应用/ XML; Q = 0.9,
* / *; Q = 0.8

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

答案 3 :(得分:1)

Q值偏离0到1的数字,它代表相对质量值。默认Q值为1.0。

所以Q值为0.9的东西比Q值为0.6的东西稍微优先。