参与减少接受语言数量限制的源试用

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-LanguageContent-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 响应标头:

  1. Origin-Trial: <ORIGIN TRIAL TOKEN> 添加到您的 HTTP 响应 标头,其中 <ORIGIN TRIAL TOKEN>其中包含您在上传对象时 来注册源试用。
  2. Content-Language 添加到您的 HTTP 响应标头中,以指明 目标受众群体的语言。
  3. Variants 添加到您的 HTTP 响应标头中以指明网站 支持的语言。
  4. [可选] 将 Vary: Accept-Language 添加到您的 HTTP 响应 以便为内容协商创建缓存键。
  5. 设置这些标头只会触发浏览器语言 协商(可能会针对初始请求重新启动) 来源。要让网站以正确的语言表示 您还需要根据 用户的 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 会根据以下规则响应 enjaAccept-Language 值,如果没有任何匹配项,则默认为 en。在这种情况下, 网站也可以提供到 /en/ja(基于 Accept-Language 值)。查看与以下内容相关的详细示例: 已开启重定向 查看实现文档

第三方源试用支持

我们目前不支持将您的域名注册为 供您试用的第三方。 如果您运营的服务是跨源作为子资源实现的 (例如广告投放或分析), Accept-Language 标头(如果顶级网站加入了源站) 试用。

验证源试用是否正常运行

通过 排查 Chrome 源试用问题 提供了一份完整的核对清单,以确保正确配置令牌。

您可在以下位置配置多种语言及其优先级: chrome://settings/languages或“设置”→“语言”。您可以考虑选择 网站支持的语言,并移至列表顶部 以确保触发额外的重新协商

包含源试用令牌的初始响应的标头应如下所示: 例如:

缩减了 Accept-Language 的请求标头的屏幕截图。

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

包含源试用令牌的初始响应的标头。

停止参与源试用

在试用期间,您可以随时停止参与并 接收用户的 Accept-Language 的完整列表。如需停止参与,请执行以下操作:

  1. 移除 Accept-Language 缩减的 Origin-Trial 标头 测试您的 HTTP 响应。
  2. [可选] 移除 Variants 标头,此标头用于选择启用 原始试用 。您还可以将 Variants 与空值结合使用, 这个。
  3. [可选] 移除 Content-Language 添加到 选择在 HTTP 响应中加入源试用 发送此标头。

源试用时长

Accept-Language Reduction 源试用将至少持续 6 个月, 这相当于大约 6 个 Chrome 里程碑。源试用将显示在 并以 M114 结尾(表示上一个试用 )。届时,Chrome 将评估来自原始网页的反馈 然后再在测试环境中发送经过缩减的 Accept-Language 字符串 分阶段方式:首先减少 Accept-Language HTTP 标头,然后减少 JS 接口。如果网站需要更多时间进行测试,可以选择 弃用源试用阶段,以便获得 Accept-Language 字符串的保存期限至少为六个月。我们将发布更多 。

分享反馈

如有任何问题或反馈,可提交至 Accept-Language Reduction GitHub 代码库