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-9A-Za-z、空格或 *,-.;=

语法

http
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 权重)

此值代表优先顺序,用相对质量价值表示,又称为权重

示例

http
Accept-Language: de
http
Accept-Language: de-CH
http
Accept-Language: zh-CN,en;q=0.5

规范

Specification
HTTP Semantics
# field.accept-language

浏览器兼容性

BCD tables only load in the browser

参见