Accept-Language

Accept-Language 请求 HTTP 头部表示客户端偏好的自然语言和区域设置。服务器使用 内容协商 来选择其中一个提议,并使用 Content-Language 响应头通知客户端选择。浏览器根据其活动用户界面语言设置此头的必要值。用户还可以通过浏览器设置配置其他首选语言。

Accept-Language 头部通常列出与 navigator.languages 属性相同的区域设置,并使用递减的 q 值(质量值)。某些浏览器(Chrome 和 Safari)在 Accept-Language 中添加仅语言的回退标签 - 例如,当 navigator.languages["en-US", "zh-CN"] 时,en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7。出于隐私目的(减少 指纹识别),Accept-Languagenavigator.languages 可能不包含用户偏好的完整列表,例如 Safari(始终)和 Chrome 的隐身模式,其中仅列出了一种语言。

当服务器无法以其他方式确定目标内容语言时(例如,使用取决于明确用户决定的特定 URL),此头部用作提示。服务器永远不应该覆盖明确的用户语言选择。Accept-Language 的内容通常不受用户控制(例如,在旅行时)。用户可能还想访问与用户界面语言不同的语言页面。

当无法以匹配的语言提供内容时,服务器可能会发送 406(不可接受)错误代码。但是,这种行为很少实现,以获得更好的用户体验,并且服务器在这种情况下通常会忽略 Accept-Language 头部。

头部类型 请求头部
禁止的头部名称
CORS 安全列表请求头部 是,但附加限制是值只能是 0-9A-Za-z、空格或 *,-.;=

语法

http
Accept-Language: <language>
Accept-Language: *

// Multiple types, weighted with the quality value syntax:
Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5

指令

<language>

语言标签(有时称为“区域设置标识符”)。它由一个表示语言的 2-3 个字母的基本语言标签组成,后面可以跟一个或多个用 '-' 分隔的附加子标签。最常见的额外信息是国家或地区变体(例如 'en-US''fr-CA')或要使用的字母类型(例如 'sr-Latn')。其他变体,例如拼写类型('de-DE-1996'),通常不使用在这个头部的上下文中。

*

任何语言;'*' 用作通配符。

;q=(q 因子加权)

任何值都按顺序放置,使用称为权重的相对 质量值 来表示偏好。

示例

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

规范

规范
HTTP 语义
# field.accept-language

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅