TypechoJoeTheme

Zt's Blog

【随笔】修复了一个识别浏览器错误的小bug

Zt
2021-05-16
/
0 评论
/
192 阅读
/
正在检测是否收录...
05/16

问题の出现

昨天,我收到了一条来自 @令人窒息的PS 的评论:「为啥我用的edge显示的是chrome?😂」。我看到评论的时候已经快半夜 12 点了,想了一下大概是因为博客系统在判断 Edge 和 Chrome 二者的请求包头 User-Agent 字段的时候出现了误判,因为新版 Edge 使用的是 Chromium 内核,所以二者请求包头的 User-Agent 差不多。于是就回复了他,「这是因为我使用的博客系统是通过你的浏览器发送的 UserAgent 来判断你使用的浏览器的,而 edge 发送的 UserAgent 和 chrome 的极为相似,并且博客系统代码里并未单独添加对于 edge 发送的 UserAgent 的识别,所以会将 edge 和 chrome 浏览器「混为一谈」。」。因为时间不早了,回复了以后就匆忙休息了。

问题の排查

今天准备解决这个问题,一看代码,咦?这不是明明有单独判断 edge 的 User-Agent 吗?

既然有单独的判断,那应该不会存在误判啊,是怎么回事呢?
稍加思索,我决定亲自看看 Edge 的 User-Agent 字段。
打开 Edge,访问我的主页,进入控制台查看 User-Agent 字段...?嗯?这个 Edge 的 User-Agent 字段在标明 Edge 「身份」的时候竟然用的是「Edg/*」而不是「Edge/*」。

查询了一下 Microsoft 的官方文档,发现这是为了区分基于 EdgeHTML 的旧版 Edge 浏览器和基于 Chromium 的新版 Edge浏览器。

Microsoft 官方建议对于 Edge/*Edg/* 进行区分,以更好的针对 EdgeHTML 和 Chromium 进行适配。

问题の解决

在代码里添加了对 Edg/* 标识的单独的判断,然后就可以成功的识别新版 Edge 浏览器了。

这个评论的浏览器识别也被自动更正了过来。

赞 · 5
版权属于:

Zt's Blog

本文链接:

https://www.zhen-t.com/blog/archives/244/(转载时请注明本文出处及文章链接)

评论 (0)