用户代理字符串变更、Chrome 和 Firefox 为减轻影响而采取的策略,以及您如何提供帮助。
Chrome 和 Firefox 几个月后就会达到 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
- 前往
chrome://flags/#force-major-version-to-100
。 - 将选项设置为
Enabled
。
将 Firefox 夜间模式配置为将主要版本报告为 100
- 打开 Firefox Nightly 的“设置”菜单。
- 搜索“Firefox 100”然后选中“Firefox 100 User-Agent” 字符串"选项。
测试并提交报告
- 如果您是网站维护人员,请使用 Chrome 测试您的网站 和 Firefox 100。检查您的用户代理解析代码和库,以及 确保它们能够处理三位数的版本号我们有 编译了 当前中断的模式。
- 如果您要开发用户代理解析库,请添加要解析的测试 大于或等于 100 的版本。我们的早期测试表明, 库可以正确处理它。不过,网络在这方面有着悠久的历史, 如果您有旧版解析库 检查是否存在问题并最终进行升级
- 在浏览网页时,发现您的主要 版本 100 在 webcompat.com 上提交报告。