什么是Microsoft Edge的用户代理string名称?

我正在创build一个网站,并希望它能够在即将推出的Microsoft Edge正式发布时兼容。 更具体地说,它的移动版本。 有谁知道什么string将标识边缘移动浏览器(例如,“IE移动”标识的移动版本的Internet Explorer)。

Microsoft Edge UAstring:

Mozilla / 5.0(Windows NT 10.0)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 42.0.2311.135 Safari / 537.36 Edge / 12.10136

我详细说明为什么在这篇博客文章。

Neowin最近报道,微软新推出的针对Windows 10的浏览器Spartan使用Chrome UAstring“Mozilla / 5.0(Windows NT 10.0; WOW64)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 39.0.2171.71 Safari / 537.36 Edge / 12.0 “。 这是有目的地完成的。

您还会注意到,整个string以“Edge / 12.0”结尾,而Chrome则没有。

我应该指出的是,这并不是从微软IE 11的一个重大改变,IE 8在Windows 8上的读法是:Mozilla / 5.0(Windows NT 6.3; Trident / 7.0; rv:11.0)就像Gecko一样。post。

什么是用户代理嗅探?

通常,Web开发人员将UA嗅探浏览器检测。 Mozilla在他们的博客上解释得很好:

向不同的浏览器提供不同的网页或服务通常是一个坏主意。 无论用户使用哪种浏览器或设备,Web都可以被所有人访问。 有很多方法可以开发自己的网站,根据function的可用性逐步提高自身,而不是针对特定的浏览器。

这里有一篇很好的文章解释了用户代理的历史。

通常,懒惰的开发者只会嗅探UAstring,并根据他们认为观众正在使用的浏览器在其网站上禁用内容。 Internet Explorer 8是开发人员常常感到沮丧的一个问题,因此他们会经常检查用户是否使用任意版本的IE,并禁用function。

Edge团队在他们的博客上详细介绍了这一点。

所有用户代理string都包含有关其他浏览器的信息,而不仅仅是您使用的实际浏览器 – 不仅包括标记,还包含“有意义”的版本号。

Internet Explorer 11的UAstring:

Mozilla / 5.0(Windows NT 6.3; Trident / 7.0; rv:11.0)像Gecko

Microsoft Edge UAstring:

Mozilla / 5.0(Windows NT 10.0)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 42.0.2311.135 Safari / 537.36 Edge / 12.10136

在W3C讨论中,Patrick H. Lauke将userAgent属性恰当地描述为“不断增长的谎言”。 (或者更确切地说,是添加足够的遗留关键字,不会立即使旧的UA嗅探代码崩溃,同时还试图传达一些实际有用和准确的信息。“)

我们build议networking开发者尽可能避免UA嗅探; 现代networking平台的function几乎都可以通过简单的方式进行检测。 例如, Modernizr库是检测特征的一种奇妙且简单的方法。

在过去的一年中,我们已经看到一些UA嗅探网站已经更新,以检测微软边缘…只是为它提供一个传统的IE11代码path。 这不是最好的方法,因为Microsoft Edge与“WebKit”行为相匹配,而不是IE11行为(任何Edge-WebKit差异都是我们有意修复的错误)。

根据我们的经验,Microsoft Edge在这些站点上的“WebKit”代码path上运行得最好。 此外,随着互联网在更广泛的设备上可用,请假定未知的浏览器是好的 – 请不要限制您的网站只能在一小部分当前已知的浏览器上工作。 如果你这样做,你的网站几乎肯定会在未来破裂。

结论

通过提供Chrome UAstring,我们可以解决这些开发人员正在使用的黑客技术,向用户展示最佳体验。

有一篇关于使用“用户代理”的浏览器检测的MDN文章 ,以及在做这类事情时应该记住的内容。

独立于MSDN Library描述了“边缘”的用户代理更改。

从MSDN 用户代理string更改页面:

Microsoft Edge for Windows 10 Mobile Insider Preview具有以下用户代理string:

Mozilla / 5.0(Windows Phone 10.0; Android 4.2.1;设备信息)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 42.0.2311.135 Mobile Safari / 537.36 Edge / 12。<OS Build#>

对于那些正在寻找一个正则expression式来检测IE 微软边缘,我从另一个SO重新使用一个答案,并添加了边缘

/(?:\b(MS)?IE\s+|\bTrident\/7\.0;.*\s+rv:|\bEdge\/)(\d+)/

我做了检查边缘,然后一个杂项数字,以防止他们决定迭代边缘版本。

目前,Web代理不是调整网站的关键点,但是您应该检测浏览器function。

对于这个问题,您应该使用像Modernizr这样的库来检查特定的浏览器function,而不pipe浏览器供应商或版本使用哪个用户。

注意:尽pipe存在downvotes,每个人都应该回顾一下这个Q&A上的其他答案,这个答案广泛地解释了我的总结答案的背后,答案提供certificate许多浏览器供应商不鼓励做用户代理嗅探。 这就是我自己的答案背后的原因,我build议大家根据function而不是特定的浏览器来调整他们的网站。

Mozilla / 5.0(Windows Phone 10.0; Android 4.2.1;设备信息)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 39.0.2171.71 Mobile Safari / 537.36 Edge / 12.0

您忘记了SA需要知道浏览器types以将其报告给mgmt。 为了准确,必须清楚浏览器的使用情况。 在一个干净的版本上,Edge用户代理没有“EDGE”关键字:

的Mozilla / 5.0 +(视窗NT + + 10.0 + Win64的; + x64)的