Chrome 和 Firefox 即将登陆主要版本 100

用户代理字符串变更、Chrome 和 Firefox 为减轻影响而采取的策略,以及您如何提供帮助。

Ali Beyad
Ali Beyad
Karl Dubost
Karl Dubost
Milica Mihajlija
Milica Mihajlija

ChromeFirefox 几个月后就会达到 100 版这可能会导致服务中断 。 这篇文章介绍了事件发生的时间表,以及 Chrome 和 Firefox 所采用的策略 以及您可以如何提供帮助。

用户代理 (UA) 是浏览器在 HTTP 标头中发送的字符串,因此服务器可以 识别浏览器。您还可以使用带有以下参数的 JavaScript 访问该字符串: navigator.userAgent。 其格式通常如下所示:

<browser_name>/<major_version>.<minor_version>

例如,发布时的浏览器的最新版本 这篇博文:

  • Chrome:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36
  • Firefox:Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:96.0) Gecko/20100101 Firefox/96.0
  • Safari:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Safari/605.1.15

主要版本 100 - 三位数版本号

对于 Chrome 和 Firefox 而言,Major 版本 100 是一个重大的里程碑。它还具有 网站从 2 位数字转为采用 2 位数字, 三位数版本号。Web 开发者使用各种技术 解析这些字符串(从自定义代码到使用用户代理解析库), 然后可用于确定相应的处理逻辑。通过 用户代理和任何其他版本报告机制很快将报告 三位数版本号

版本 100 时间轴

浏览器版本 100 将首先作为实验性版本发布(Chrome Canary 版、Firefox Nightly)、Beta 版,最后安装稳定版 渠道。

浏览器 时间轴
Chrome(版本 时间表 2022 年 3 月 29 日
Firefox(版本 时间表 2022 年 5 月 3 日

为什么三位数的版本号会出现问题?

当浏览器首次达到版本 10 的时间是在 12 多年前, 我们发现了许多问题 使用用户代理解析库,因为其中主要版本号是 从 1 位数字变为 2。

如果不遵循任何规范 不同的浏览器有不同的格式 以及网站特定用户代理解析。时间是 某些解析库可能存在硬编码的假设或错误, 未考虑三位数主要版本号的脚本众多图书馆 改进了浏览器移到两位数版本号时的解析逻辑, 达到 3 位数里程碑预计会导致的问题更少。小麦 Taylor、 Chrome 团队的一名工程师就常见 UA 解析问题进行了调查, 库中找到的结果。在 已经发现了一些问题,我们正在进行处理。

浏览器是如何处理的?

Firefox 和 Chrome 浏览器都在运行实验,其中当前版本的 浏览器报告的主要版本为 100, 网站崩溃这导致了我们报告的一些问题, 其中一些问题已经修复。 这些实验将继续运行,直到版本 100 发布。

此外,还有备用缓解策略,如版本 100 发布到稳定版对网站造成的损害比预期更大。

Chrome 缓解措施

在 Chrome 中,备份方案是使用标志将主要版本冻结为 99 并在 SDK 的次要版本部分报告实际的主要版本号 用户代理字符串(代码已 landed)。

用户代理字符串中报告的 Chrome 版本遵循以下格式: <major_version>.<minor_version>.<build_number>.<patch_number>

如果采用了备用计划,则用户代理字符串应如下所示: :

99.101.4988.0

Chrome 还在运行实验,以确保报告 3 位数值 不会导致中断,因为 Chrome 用户代理字符串中的次要版本在很长一段时间内报告了 0 。Chrome 团队将决定是否采用备用方式 而根据所报告问题的数量和严重程度

Firefox 缓解措施

在 Firefox 中,具体策略取决于中断的重要性。Firefox 具有 网站干预机制。 Mozilla Webcompat 小组可以使用 机制。如果在 Firefox 网址栏中输入 about:compat,您可以看到 目前正在修复。如果某个网站发生崩溃,而主要版本为 100, 特定网域,则可以通过发送版本 99 来解决此问题。

如果崩溃现象很普遍,则可以冻结主要版本 数字。然后有不同的可能策略,每种策略都有自己的 优缺点。Mozilla 可将实际版本号作为次要版本发送 编号、完全按原样冻结字符串,或者发送实际版本号 通过其他参数传递。

每个增加用户代理字符串复杂性的策略在 对生态系统的影响。让我们携手合作,避免再出现一次怪异事件 行为

您能提供什么帮助?

在 Chrome 和 Firefox Nightly 中,您可以将浏览器配置为 100 版本,并报告您遇到的所有问题。

将 Chrome 配置为将主要版本报告为 100

  1. 前往chrome://flags/#force-major-version-to-100
  2. 将选项设置为 Enabled

将 Firefox 夜间模式配置为将主要版本报告为 100

  1. 打开 Firefox Nightly 的“设置”菜单。
  2. 搜索“Firefox 100”然后选中“Firefox 100 User-Agent” 字符串"选项。

测试并提交报告

  • 如果您是网站维护人员,请使用 Chrome 测试您的网站 和 Firefox 100。检查您的用户代理解析代码和库,以及 确保它们能够处理三位数的版本号我们有 编译了 当前中断的模式
  • 如果您要开发用户代理解析库,请添加要解析的测试 大于或等于 100 的版本。我们的早期测试表明, 库可以正确处理它。不过,网络在这方面有着悠久的历史, 如果您有旧版解析库 检查是否存在问题并最终进行升级
  • 在浏览网页时,发现您的主要 版本 100 在 webcompat.com 上提交报告