【问题标题】:How to programmatically get ie10's REAL user agent如何以编程方式获取 ie10 的 REAL 用户代理
【发布时间】:2013-02-24 14:26:57
【问题描述】:

我需要以编程方式获取浏览器的用户代理: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;媒体中心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 没有这个问题,两种方法的用户代理是一样的。)

谢谢,

【问题讨论】:

  • 是否有理由进行 userAgent 嗅探而不是正确的特征检测?
  • @FabrícioMatté 这是出于安全目的。基本上,我的 silverlight 客户端(带有 ClientHttp)需要向服务器 api 发送完全相同的 ua 字符串。

标签: javascript silverlight user-agent internet-explorer-10


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这似乎没有回答这个问题 - 它似乎没有提到试图在任何地方获取 .NET 版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 2016-06-26
    相关资源
    最近更新 更多