Accept * HTTP标头中的q = 0.5是什么?


190
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

这些“ q =%f”是什么意思?

Answers:


246

这称为相对品质因数。它以0到1的比例指定用户希望使用哪种语言,如HTTP / 1.1规范§14.4所示

可以给每个语言范围一个相关的质量值,该质量值表示用户对该范围指定的语言的偏好的估计。质量值默认为“ q = 1”。例如,

  Accept-Language: da, en-gb;q=0.8, en;q=0.7

表示:“我更喜欢丹麦语,但会接受英式英语和其他类型的英语。”


26
很好,谢谢!但是,为什么不按优先顺序列出它们呢?
kolypto 2011年

9
那么,接受80%合格的en-gb 到底意味着什么?
Pacerier

3
@Pacerier:这意味着,如果您的网站是多语言的,则用户宁愿以英式英语(而不是美式英语)提供内容。
蒂姆·库珀

5
@TimCooper为什么不只按顺序或偏好显示语言?该值似乎并不重要,除了它比其他值更大之外。
罗布

6
到@kolypto,参数列表,无论是URL还是标题中,都没有隐式顺序。
JP Silvashy

37

在规范中称为相对品质因数

每个媒体范围可以跟随一个或多个接受参数,以“ q”参数开头,以指示相对质量因数。第一个“ q”参数(如果有)将媒体范围参数与accept-params分开。质量因子允许用户或用户代理使用从0到1的q值刻度来指示该媒体范围的相对偏好程度(第3.9节)。默认值为q = 1。

...

这个例子

Accept: audio/*; q=0.2, audio/basic

应该解释为“我更喜欢音频/基本,但是如果质量降低80%之后,如果音频类型最好,请向我发送任何音频类型。”

也可以看看:


2
我参加聚会真的很晚-但是“质量下降80%之后”是什么意思?这是偏好程度,而不是音频文件的质量,对吗?还是我误读了吗?
Mave 2015年

10
@Mave:嗯,在实践中,它可能最常被用作衡量偏好的方法。但是,在其原始表述中,我确实认为它是基于编码的质量。例如,考虑FLAC与MP3。您可以这样说:“如果MP3版本质量至少是无损版本质量的50%,请发送给我。如果不是,请将FLAC版本发送给我。” 我不知道如何量化这种质量,以及是否在实践中使用它,但我相信这是最初的意图。
塞巴斯蒂安·帕斯凯·托霍尔姆

1
@SebastianPaaskeTørholm我是来这里寻找更多信息的。RFC 7231中只有两个地方似乎暗示了这个次要含义,但是我对它的工作方式并不十分清楚,因为这两个含义可能会相互冲突-例如,似乎这是不可能的如果以这种方式重载了qvalue,则表示对有损类型的偏好高于有损类型的偏好。
分号

首选语言始终是标题中的第一个参数吗?
oldboy

@BugWhisperer链接的标准有一个更详细的示例,但它不是第一个。请咨询。:)
塞巴斯蒂安·帕斯凯·托霍尔姆'19

6

接受语言质量参数可以这样理解:

通过将Accept-Language: pl_PL;q=0.8, en_US;q=0.2,标头附加到请求,我们将以下消息传达给服务器

服务器,请向我提供该网站的波兰语翻译,但只有在其质量>= %80%与质量相关的情况下,才可以这样做。如果质量是<80%-我不介意获得英文版本,因为它对我来说无关紧要,因为我还是会说英语。

因此,例如,作为网页内容提供商,我们可能会Accept-Language以这种方式引入标头解析,以使我们的网站适合根本不讲英语的外国人使用(那么即使翻译后的导航也会有所帮助(例如,仅翻译了导航的页面,具有q=0.1),其中具有q=0.9完全翻译的内容具有完全翻译的内容,并且可能由说原始语言和翻译语言内容的母语人士进行验证q=0.99-因为这是完全翻译内容含义的唯一可能的情况)


首选语言始终是标题中的第一个参数吗?
oldboy

@BugWhisperer是的,但是如果您想严格遵守标准,并且您的翻译非常简单或较弱,则可能要跳过第一个值
test30

为什么使用第二个值会更严格?
oldboy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.