gpt4 book ai didi

internet-explorer - 为什么 IE9+、Chrome 和 Opera15+ 浏览器在用户代理中将自己标识为 Mozilla?

转载 作者:行者123 更新时间:2023-12-04 07:49:00 27 4
gpt4 key购买 nike

我正在寻找一种用 JavaScript 识别 IE 的方法,突然间,我注意到浏览器被识别为 Mozilla:

歌剧

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36 OPR/17.0.1241.53

Chrome

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36

IE

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)

现在我想知道为什么这个浏览器被识别为 Mozilla

最佳答案

这是网站开发者和网络浏览器之间永无休止的 war 的结果。

每次浏览器推出新功能时,开发人员都希望使用该功能。但他们也需要处理不支持它的浏览器。

最明显的方法是使用 UA 字符串。寻找您知道支持该功能的浏览器,并相应地运行您的代码。很简单。

除了不是那么容易,因为不可避免地会发生几个月后,其他浏览器支持相同的功能。

所以现在其他浏览器有一个问题:网站被编写为使用他们支持的功能,但这些网站只为一个特定的浏览器激活该功能。

浏览器供应商的解决方案:修改他们的 UA 字符串,以欺骗网站激活该功能。

这种事情自 1990 年代以来一直在发生,当时 IE 和 Netscape 进行了“浏览器大战”(“Mozilla”是 Netscape 唯一的 UA 字符串名称,因此其他所有人都将其复制到他们的 UA 字符串中以保持兼容性),并且一直持续到今天(IE11 发布时,它的 UA 字符串与 IE10 的 UA 字符串完全不同,专门这样做是为了破坏浏览器嗅探代码)。

最终结果是所有主流浏览器的UA字符串都是一团糟。它们充满了奇怪的东西,例如竞争对手的名称、错误的版本号、多个版本号和其他晦涩的引用,所有这些都是为了愚弄任何愚蠢到试图阅读它的脚本。是的,解析它并获得可靠的浏览器检测可能几乎是可能的,但一旦任何浏览器发布新版本,它可能会再次中断。

最重要的是,为了增加困惑,大多数浏览器还提供配置设置,让用户能够更改 UA 字符串;并且已知一些第三方产品(防病毒、防火墙、代理等)也会修改或替换 UA 字符串,所有这些都使您更不可能通过解析得到可靠的响应。

那么,这一切的意义是什么?

作为开发人员,最好的办法就是完全忽略 UA 字符串。对于任何实际目的,它对你来说几乎毫无值(value)。如果您需要使用可能并非在所有浏览器中都可用的功能,通常最好进行功能检测而不是嗅探 UA 字符串(为此,您可能需要考虑 Modernizr library)。

只要假装 UA 字符串不存在,您作为开发人员的生活就会轻松很多。

关于internet-explorer - 为什么 IE9+、Chrome 和 Opera15+ 浏览器在用户代理中将自己标识为 Mozilla?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20215983/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com