Accept-Language
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Accept-Language
请求 HTTP 标头表示客户端所偏好的自然语言和区域设置。服务器利用内容协商机制从这些提议中选出一项,并通过 Content-Language
响应标头将这一选择告知客户端。浏览器会根据其当前活跃的用户界面语言为该标头设定所需的值。用户很少更改此设置,而且也不建议这样做,因为这可能导致指纹识别。
当服务器无法通过其他方式(比如使用依赖于用户明确决定的特定 URL)确定目标内容语言时,这个标头可作为提示使用。服务器绝不应覆盖用户的明确语言选择。Accept-Language
的内容常常超出用户的控制范围(例如在旅行时)。用户也可能希望访问使用的语言与用户界面并不相同的页面。
如果服务器不能提供任何可以匹配的语言的版本,那么理论上来说应该返回一个 406
(Not Acceptable,不被接受)的错误码。但是为了更好的用户体验,这种方法很少被采用,取而代之的是将其忽略。
标头类型 | 请求标头 |
---|---|
禁止修改的标头 | 否 |
列入 CORS 白名单的请求标头 | 是的,但有附加限制,即值只能是 0-9 、A-Z 、a-z 、空格或 *,-.;= 。 |
语法
Accept-Language: <language>
Accept-Language: *
// 使用质量价值语法对多个类型进行加权:
Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5
指令
<language>
-
用含有两到三个字符的字符串表示的语言码或完整的语言标签。除了语言本身之外,还会包含其他方面的信息,显示在中划线
'-'
后面。最常见的额外信息是国家或地区变种(如'en-US'
或'fr-CA'
)或者表示所用的字母系统(如'sr-Latn'
)。其他变种诸如拼字法('de-DE-1996'
)等通常不被应用在这种场合。 *
-
任意语言;
'*'
表示通配符(wildcard)。 ;q=
(q-factor 权重)-
此值代表优先顺序,用相对质量价值表示,又称为权重。
示例
Accept-Language: de
Accept-Language: de-CH
Accept-Language: zh-CN,en;q=0.5
规范
Specification |
---|
HTTP Semantics # field.accept-language |
浏览器兼容性
BCD tables only load in the browser
参见
- HTTP 内容协商
- 表示内容协商结果的标头:
Content-Language
- 其他类似的标头:
TE
、Accept-Encoding
、Accept