Accept-Language Reduction 旨在减少被动式数字“指纹”收集
减少用户在 Google 搜索中的语言偏好,
Accept-Language
标头,并且仅发送用户最偏好的语言(仅发送一种)。
从 Chrome 109 开始
我们将对外开放
源试用
用于减少 Accept-Language 减少,使网站能够选择接收
Accept-Language
标头。以便网站发现并解决问题
在缩减的 Accept-Language
成为 Chrome 中的默认行为之前,
。若要在面向稳定用户发布该功能之前对其进行测试,
请务必在 Chrome 109(目前
日期为 2023 年 1 月 10 日)。
下面列出了缩减前后的 Accept-Language
头文件示例。
Accept-Language: en-GB,en;q=0.9,de;q=0.8,fr;q=0.7
Accept-Language: en-GB
下面简要介绍了源试用以及预期结果。您可以分享 有关此变更的反馈,或您在源试用期间遇到的任何问题, Accept-Language Reduction GitHub 的 代码库。
什么是 Accept-Language?
通过 接受-语言 字符串会在每个 HTTP 请求中共享,并在 JavaScript 中公开给所有 浏览器加载的资源目前,它包含用户的所有 首选语言。
为什么要减少 Accept-Language?
Accept-Language Reduction 旨在减少被动式数字“指纹”收集 。
目前,Accept-Language
标头默认在每个 HTTP 上共享
请求并在 JavaScript 中提供给浏览器加载的所有资源。它
包含用户的所有语言偏好设置。而不是让浏览器
用户配置的语言的完整列表,以防网站想要
我们正推出一种新方法,让网站能够表明
浏览器将负责处理
协商并显示首选语言。
另一个原因是,许多网站可能未使用 Accept-Language
标头
完全没有必要进行语言协商(例如,
研究表明,只有 7.2% 的
排名前 10000 的网站使用 Accept-Language
)。Chrome 无痕模式已降低了
Accept-Language
比 1。
这对 Web 开发者有什么影响?
依靠 Accept-Language
进行语言协商的网站应
准备享受优惠Accept-Language
并考虑参与
源试用。缩减后的 Accept-Language
值将显示在:
Accept-Language
HTTP 请求标头。navigator.languages
JavaScript getter。
浏览器将负责进行语言协商
用户首选语言来发送到网站。为此,网站需要
添加两个标头
Variants
(新标题指明网站支持的语言)Accept-Language
和
Content-Language
(在
响应标头(请参阅下面的详细示例)。
优惠后的 Accept-Language
方案目前不包含 iOS 和 WebView,并且
这些平台将继续让用户Accept-Language
的完整列表。
我们计划日后支持这些平台。
Accept-Language 缩减的源试用
源试用要求参与网站在其
响应,告知浏览器启用指定的试验。不过,
浏览器向网站发出初始请求后,就无法知道
如果网站正在参与源试用。也就是说,初始
请求不会发送缩减后的 Accept-Language header
。
针对该网页中同源和跨源子资源的请求将
接收缩减的 Accept-Language
标头。后续同源导航
也会收到缩减的 Accept-Language
标头。跨源导航
将恢复为发送完整标头,而
网页(例如第三方 iframe 请求)仍会发送缩减后的 Accept-Language
标头。
这与用户代理缩减源试用类似,如果您希望 如需详细了解 Chromium 内部实现,请参阅 实现减少 Accept-Language HTTP 标头。
参与 Accept-Language Reduction 源试用
如需进一步的指导,请参阅 开始进行 Chrome 源试用, 但基本步骤如下所示。
第 1 步
如需注册参加源试用并为您的网域获取令牌,请按以下步骤操作: 请访问 尝试减少 Accept 语言 页面。
第 2 步
更新您的 HTTP 响应标头:
- 将
Origin-Trial: <ORIGIN TRIAL TOKEN>
添加到您的 HTTP 响应 标头,其中 <ORIGIN TRIAL TOKEN
>其中包含您在上传对象时 来注册源试用。 - 将
Content-Language
添加到您的 HTTP 响应标头中,以指明 目标受众群体的语言。 - 将
Variants
添加到您的 HTTP 响应标头中以指明网站 支持的语言。 - [可选] 将
Vary: Accept-Language
添加到您的 HTTP 响应 以便为内容协商创建缓存键。 - 设置这些标头只会触发浏览器语言 协商(可能会针对初始请求重新启动) 来源。要让网站以正确的语言表示 您还需要根据 用户的 Accept-Language 标头(请参见下面的示例)。
第 3 步
在 Chrome M109 Beta 版(或更高版本)中加载您的网站,然后开始接收 缩减了 Accept-Language 字符串。
如有任何问题或反馈,可提交至 Accept-Language Reduction GitHub 代码库。
演示
用于演示选择加入源试用的多语言网站 (以及源代码)请参阅 https://reduce-accept-language.glitch.me/.
有关如何选择加入和退出源试用(以及 请参阅 https://reduce-accept-language-ot.glitch.me/.
例如,example.com
支持 ja
(日语)和 en
(英语)。答
请求的状态包括:
GET / HTTP/1.1
Host: example.com
Accept-Language: en
网站知道用户更喜欢英文内容,这取决于其使用的语言 接受-language。响应标头可能包括:
HTTP/1.1 200 OK
Content-Language: en
Variants: Accept-Language=(en ja)
Origin-Token: a-valid-token
如果用户偏好日语内容,则请求为:
GET / HTTP/1.1
Host: example.com
Accept-Language: ja
在这种情况下,网站会返回日语内容的标头:
HTTP/1.1 200 OK
Content-Language: ja
Variants: Accept-Language=(en ja)
Origin-Token: a-valid-token
在服务器端,网站可能希望获得特定语言的支持, 在未检测到支持的情况下回退到默认值:
if(accept_language == 'ja') {
res.response('ja_page')
}
else {
res.response('en_page')
}
在上面的示例中,example.com
会根据以下规则响应 en
或 ja
:
Accept-Language
值,如果没有任何匹配项,则默认为 en
。在这种情况下,
网站也可以提供到 /en
或
/ja
(基于 Accept-Language
值)。查看与以下内容相关的详细示例:
已开启重定向
查看实现文档。
第三方源试用支持
我们目前不支持将您的域名注册为
供您试用的第三方。
如果您运营的服务是跨源作为子资源实现的
(例如广告投放或分析),
Accept-Language
标头(如果顶级网站加入了源站)
试用。
验证源试用是否正常运行
通过 排查 Chrome 源试用问题 提供了一份完整的核对清单,以确保正确配置令牌。
您可在以下位置配置多种语言及其优先级:
chrome://settings/languages
或“设置”→“语言”。您可以考虑选择
网站不支持的语言,并移至列表顶部
以确保触发额外的重新协商
包含源试用令牌的初始响应的标头应如下所示: 例如:

包含简化版 Accept-Language 的后续请求标头如下所示:

停止参与源试用
在试用期间,您可以随时停止参与并 接收用户的 Accept-Language 的完整列表。如需停止参与,请执行以下操作:
- 移除 Accept-Language 缩减的
Origin-Trial
标头 测试您的 HTTP 响应。 - [可选] 移除
Variants
标头,此标头用于选择启用 原始试用 。您还可以将Variants
与空值结合使用, 这个。 - [可选] 移除
Content-Language
添加到 选择在 HTTP 响应中加入源试用 发送此标头。
源试用时长
Accept-Language Reduction 源试用将至少持续 6 个月, 这相当于大约 6 个 Chrome 里程碑。源试用将显示在 并以 M114 结尾(表示上一个试用 )。届时,Chrome 将评估来自原始网页的反馈 然后再在测试环境中发送经过缩减的 Accept-Language 字符串 分阶段方式:首先减少 Accept-Language HTTP 标头,然后减少 JS 接口。如果网站需要更多时间进行测试,可以选择 弃用源试用阶段,以便获得 Accept-Language 字符串的保存期限至少为六个月。我们将发布更多 。
分享反馈
如有任何问题或反馈,可提交至 Accept-Language Reduction GitHub 代码库。