0

我需要以编程方式获取浏览器的用户代理:Windows 7 上的 IE10。

那应该是一件容易的事。我在 javascript 中尝试了 navigator.userAgent,在 Silverlight 中尝试了 HtmlPage.BrowserInformation.UserAgent,它们都返回:

Mozilla/5.0(兼容;MSIE 10.0;Windows NT 6.1;WOW64;Trident/6.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729;Media Center PC 6.0;.NET4。 0E;InfoPath.3;.NET4.0C)

,看起来不错。但是,正如 Fiddler 注意到的那样,浏览网站时真正的 UA IE10 发送的是:

Mozilla/5.0(兼容;MSIE 10.0;Windows NT 6.1;WOW64;Trident/6.0)

,这是一个较短的版本。如何获得 IE10 正在使用的这个较短的字符串?

(我安装了 Firefox 19 并且 Firefox 没有这个问题,两种方法的用户代理是一样的。)

谢谢,

4

2 回答 2

0

其他应用程序有机会修改用户代理以添加您在上面看到的信息,例如 .NET CLR、媒体中心等的版本... http://msdn.microsoft.com/en-us/library/ms537503 (v=vs.85).aspx

Scott Hanselman 前段时间有一个帖子,其中一些信息来自 Windows 注册表http://www.hanselman.com/blog/TheNETFrameworkAndTheBrowsersUserAgentString.aspx

当您使用浏览器时,用户代理将已更新以包含任何必要的信息,因此很遗憾您将无法获得原始的干净版本。

通常,您希望在浏览器嗅探上使用特征检测,但正如您所提到的,它有适当的用例。我知道这并没有像您希望的那样回答问题,但希望它可以解释正在发生的事情。

于 2013-03-07T03:33:18.967 回答
-2

据我所知,不可能通过“功能检测”方法在客户端上获取已安装的 .NET Framework 版本。userAgent 字符串是唯一的方法,它被破坏了。

于 2015-12-05T01:46:04.307 回答