Chrome 和 Firefox 版本100对User-Agent的缓冲处理

949 阅读3分钟

本文首发于「妙蛙种子前端」公众号,欢迎关注~

Chrome 和 Firefox 将在最近的几个月内更新到100版本,版本预计的发布时间:

  • Chrome:2022 年 3 月 29 日
  • Firefox:2022 年 5 月 3 日 100 版本是Chrome 和 Firefox 的里程碑,也是从两位数版本号升级为三位数版本号的时间点。这次版本号的升级,可能会导致部分网站识别User-Agent中浏览器版本号逻辑导致网站功能异常。

为什么100版本号可能会影响User-Agent?

我们在开发应用的时候经常需要通过User-Agent获取客户端的环境,可以通过自己编写正则、字符匹配或者是用User-Agent解析库方式来获取User-Agent里的信息,然后处理对应的业务逻辑。

在2012年浏览器版本号首次达到10时,版本号从一位数变成了两位数,导致许多User-Agent库、网站出现了许多问题。

在没有统一规范的情况下,不同的浏览器对 User-Agent 字符串格式可能略有区别。一些 User-Agent 库可能有硬编码或者写死两位版本号的规则,没有考虑到版本号升级至三位会带来的异常。

但有了12年升级至两位版本号时的经验,许多工具库改善了解析逻辑,可预见的是当版本号至100时的问题会少很多。 Chrome团队的工程师 Mike Taylor 对常见的 UA 解析库进行了调查,暂时没有发现任何问题。但也不能排除部分应用没有使用UA解析库或者不常用的UA解析库,所以Chrome 和 Firefox 对升级至100版本的态度还是比较谨慎的。

Chrome 和 Firefox 在发布100版本前进行各方面的测试,并且记录了许多可能是100版本导致的错误。其中针对100版本对User-Agent解析错误的问题,Chrome 和 Firefox 都有各自的缓冲处理方案。

Chrome的缓冲处理方案

Chrome的缓冲方案是将主版本号冻结在99,并将真正的版本号放到次要版本号中。如:99.101.4988.0

当然 Chrome 还在进行测试,以确保在 User-Agent 的次要版本号升级至三位数的值不会导致别的问题,Chrome 团队将追踪发现问题的数量和严重程度决定是否使用采用这种缓冲方案。

Firefox的缓冲处理方案

Firefox中有一个站点干预机制,会在这个机制中尝试热修复异常的网站。如果你在 Firefox URL 栏中打开 about:compat 页面,就可以看到当前正在修复的内容

如果某个站点在其他版本中显示正常,唯独在 100 版本时无法正常显示,Firefox则会使用 99 版本来打开这个站点。如果发现影响很广或者个别站点的干预变得难以管理,Mozilla 可以将 Firefox 的主要版本暂时冻结为 99。

交个朋友吧

交个朋友吧,微信搜索 「妙蛙种子前端」 公众号添加关注~ 妙蛙种子前端是一个记录/分享WEB前端技术相关的前端公众号,始于前端又不止于前端,包括但不限于前沿互联网只是、学习笔记、认知提升等内容。