这是可以预料的。我在这篇博文中详细说明了原因。
Neowin 最近报道称,微软针对 Windows 10 的新浏览器 Spartan 使用 Chrome UA 字符串“Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0 ”。 这是故意的。
您还会注意到整个字符串以“Edge/12.0”结尾,而 Chrome 没有。
我应该指出,这与 Microsoft 对 IE 11 所做的做法并没有完全不同,在 Windows 8 上显示为:Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko,如本文所述邮政。
什么是用户代理嗅探?
通常,Web 开发人员会使用 UA 嗅探来检测浏览器。Mozilla 在他们的博客上很好地解释了这一点:
为不同的浏览器提供不同的网页或服务通常是个坏主意。网络意味着每个人都可以访问,无论他们使用哪种浏览器或设备。有多种方法可以开发您的网站,以根据功能的可用性而不是针对特定浏览器来逐步增强自身。
这是一篇很棒的文章,解释了用户代理的历史。
通常,懒惰的开发人员只会嗅探 UA 字符串并根据他们认为查看者使用的浏览器禁用他们网站上的内容。Internet Explorer 8 对开发人员来说是一个常见的挫折点,因此他们会经常检查用户是否使用任何版本的 IE,并禁用功能。
Edge 团队在他们的博客上对此进行了更深入的详细介绍。
所有用户代理字符串都包含有关其他浏览器的信息,而不是您正在使用的实际浏览器——不仅是令牌,还有“有意义的”版本号。
Internet Explorer 11 的 UA 字符串:
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) 像 Gecko
Microsoft Edge UA 字符串:
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136
userAgent 属性被 Patrick H. Lauke 在 W3C 讨论中恰当地描述为“不断增长的谎言包”。(“或者更确切地说,添加足够多的旧关键字不会立即让旧的 UA 嗅探代码崩溃,同时仍试图传达一些实际有用和准确的信息的平衡行为。”)
我们建议 Web 开发人员尽可能避免 UA 嗅探;现代网络平台功能几乎都可以通过简单的方式检测到。在过去的一年中,我们看到一些 UA 嗅探站点已更新以检测 Microsoft Edge……只是为其提供了旧版 IE11 代码路径。这不是最好的方法,因为 Microsoft Edge 匹配“WebKit”行为,而不是 IE11 行为(任何 Edge-WebKit 差异都是我们有兴趣修复的错误)。
根据我们的经验,Microsoft Edge 在这些站点的“WebKit”代码路径上运行最好。此外,随着互联网在更广泛的设备上可用,请假设未知浏览器是好的 - 请不要将您的网站限制为仅在一小部分当前已知的浏览器上运行。如果你这样做,你的网站几乎肯定会在未来崩溃。
结论
通过提供 Chrome UA 字符串,我们可以解决这些开发人员使用的黑客攻击,为用户提供最佳体验。