最近,谷歌浏览器和火狐浏览器官方都在自己的博客中宣布即将发布版本,并且现在Chrome已经发布到Beta通道,开发者和喜欢尝鲜的用户可以提前体验。
然而,很快Chrome将造成千年虫现象的话题上了相关技术平台的热点,这也让很多吃瓜群众非常好奇,这篇文章就带大家简单了解一下什么是千年虫及Chrome为什么可能会造成千年虫现象。
千年虫可能被大家熟知的另一个名字是“千年危机”,在一些计算机和控制芯片里,由于年份只存储后两位,比如年只存储22,而一千年之后的年,那些存储22的数据就会无法识别是还是,也因此导致很多非常重大的灾难。
比如我们年存了0元到银行,年之后,去除其他任何外在因素,那么光利息应该也能拿到可观的一大笔钱,但是,如果银行只存储了22这两个十进制的年份,则我们可能一分钱的利息都拿不到。
上面的解释只是为了让大家能够更好的理解“千年虫”是什么,事实上,千年虫的危害更加可怕,会直接影响金融、军事、交通等很多重要领域。
那么,为什么谷歌Chrome可能会导致千年虫呢?
这得先从“用户代理字符串说起”,做web开发的人员,尤其是做前端的开发者应该都知道,很早之前,浏览器各种内核让前端苦不堪言,而那时候为了兼容各个浏览器,前端需要读取浏览器的“用户代理字符串”,内容大概有浏览器名称、型号、版本等,从而根据浏览器做相应的兼容处理。
而这次所说的引起千年虫就是因为版本号的问题,大家可以看一下下面的谷歌用户代理字符串示例:
Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/.36(KHTML,likeGecko)Chrome/96.0..45Safari/.36
上面的字符串中,有一个“Chrome/96.0..45”字符串,其中的96就是谷歌浏览器的版本号,而问题也就出在这个96上。前面说了,前端开发者为了兼容浏览器或者其他目的,会读取浏览器的相关信息做下一步的逻辑处理,那么,怎么读取浏览器的各种信息呢?
这其中就有一个Duda的前端框架读取版本号的时候,他们使用了读取Chrome/后的两位字符,也就是96,根据这个规则,Chrome版本的时候,他们将读取到10这个版本号,而10这个版本是很早期的版本,很多网站会直接提示“浏览器版本太低”之类的信息,整个网站也不显示其他内容,等待用户升级。
Duda可能只是个例,目前,互联网上有不计其数的网站在运行,其中,不能排除有其他网站或者流行框架使用和Duda一样的规则获取版本号。作为行业的从业人员,我们能做的就是尽快修改规则,避免新“千年虫”的危害,我们也希望谷歌和火狐能在版正式发布之前,找到更好的解决办法。
而对于普通人来说,大可以放心吃瓜,专业的事有专业的人来解决,无需担心。