Chrome和Firefox的开发者都对100以上的三位数版本号表示担忧,因为双方争夺版本号。十二年前,当当时流行的浏览器首次达到版本10时,由于主版本号从一位变为两位,因此在User-Agent解析库中发现了许多问题。在没有规范可循的情况下,不同的浏览器对User-Agent字符串和站点特定的User-Agent解析有不同的格式。另外,一些UA解析库可能会因为没有考虑三大版本号而在编码逻辑上存在bug。但是,当浏览器版本号从一位变成两位后,很多UA解析库改进了解析逻辑。因此,三位版本号应该不会导致UA解析库出现问题。Chrome团队的工程师MikeTaylor排查了常见的UA解析库,没有发现问题。在现场运行Chrome实验时发现了一些问题并正在解决。解决方法Firefox和Chrome都在运行实验,试图将浏览器当前版本的主版本号设置为100,以检测网站可能存在的问题。这类实验发现了一些可能存在的问题,部分问题已经修复,实验会一直持续到100版本发布。另外,各浏览器厂商针对100版本号制定了备份缓解策略,以防止100版本发布到稳定通道后突然作恶,对部分网站造成不可逆的破坏。Firefox缓解措施在Firefox中,缓解策略将取决于损坏的严重程度。Firefox有一个站点干预机制,Mozillawebcompat团队可以使用它来热修复Firefox中损坏的网站。在FirefoxURL栏中输入about:compat以查看当前正在修复的内容。如果站点在特定域上的主要版本100出现问题,则可以通过发送版本99来修复。如果漏洞很普遍并且对个别站点的干预变得难以管理,Mozilla可以暂时将Firefox的主要版本冻结在99,然后测试其他选项.Chrome缓解措施Chrome版本中报告的用户代理字符串遵循以下模式:...(major_minor_build_patch)。Chrome目前的回退是直接在User-Agent字符串中将主版本号冻结在99,然后在次版本部分报告真实的主版本号(相关代码已经落地)。如果使用备份计划,Chrome101版本的User-Agent字符串将如下所示:99.101.4988.0,99Chrome仍处于试验阶段,因为ChromeUA字符串中的次要版本号长期为0,以确保为次要版本部分写一个三位数的值不会导致错误。Chrome团队将根据所报告问题的数量和严重程度来决定是否使用备份选项。用户可以在Chrome和FirefoxNightly参与测试,用户也可以手动将浏览器版本号改为100,然后测试日常使用是否有问题。FirefoxNightly:打开FirefoxNightly的设置菜单。搜索“Firefox100”并选中“Firefox100User-AgentString”选项。Chrome:(1)在URL栏中输入chrome://flags/#force-major-version-to-100(2)将选项设置为“启用”。如果你是网站维护者,请用Chrome和Firefox100测试网站,检查User-Agent解析代码和库,确保它们可以处理三位数版本号,这里你可以看到当前受影响的网站模式。如果你开发一个User-Agent解析库,添加测试来解析大于或等于100的版本号。浏览器厂商的早期测试表明最新版本的UA解析库可以正确处理它。但是如果你有一个旧版本的解析库,是时候检查和升级了。如果您是浏览器用户,并且在浏览网页时发现主要版本100存在任何问题,请在webcompat.com上提交报告。
