首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Internet explorer 11在服务器端的检测

Internet explorer 11在服务器端的检测
EN

Stack Overflow用户
提问于 2013-11-15 19:24:53
回答 4查看 28.2K关注 0票数 21

我们都知道,IE11检测不适用于服务器端语言,因为微软已经删除了IE/MSIE浏览器指示,现在完全是"Mozilla“。

我也知道做浏览器检测/版本是有风险的,但在过去我们都做得很好。

对网站的一些要求是这样的:

必须适用于某些版本的火狐和更高版本必须适用于某些版本的chrome和更高版本必须适用于某些版本的safari(以下版本和更新版本)必须适用于IE >= 8

所以问题就在这里...IE11在我的列表中指示它不受支持。我想从服务器(ASP.NET/MVC)的web端来支持它。

目前还不清楚如何从服务器端准确地检测到这一点。有人知道是怎么回事吗?

这是现在在IE 11中显示的用户代理:

"Mozilla/5.0 (Windows NT 6.1;WOW64;Trident/7.0;rv:11.0),如壁虎“

rv:11.0告诉我们它的IE11,但是做一个解析仍然意味着,例如,它可能是某个版本的chrome,而这个版本在这样的需求中不受支持,甚至是firefox。

那么,检查IE 11或更高版本的最好方法是什么呢?

我不太确定从“三叉树”开始的搜索,因为我不知道其他浏览器是否使用它。

欢迎任何方向。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-11-15 20:41:48

我使用下面的Regex解决了这个问题,因为我使用了一个敲出系统来检查访问站点所使用的浏览器。

在这种情况下,即使检查了浏览器"IE“并返回false,我仍然继续使用这个正则表达式,并检查它是否与用户代理匹配:

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

我希望这对某些人有帮助。我对它进行了测试,运行良好。我还将rv更改为12或更高,如果在IE12中,他们将rv更改为12,它也可以很好地工作。

票数 8
EN

Stack Overflow用户

发布于 2013-11-15 20:17:48

使用如下正则表达式:

代码语言:javascript
复制
Regex.IsMatch(this.Request.UserAgent, @"Trident/7.*rv:11")

Trident是IE使用的渲染引擎的名称。正如您在Wikipedia文章中所看到的,其他一些应用程序也使用Trident引擎。但是在用户代理中搜索三叉树应该不是问题,因为没有其他主要浏览器使用三叉树。

只有IE11使用三叉树版本7,所以如果您使用正则表达式搜索Trident/7,它应该会找到IE11。

票数 17
EN

Stack Overflow用户

发布于 2013-11-15 19:33:00

代码语言:javascript
复制
    public ActionResult Index()
    {
        var browser = this.Request.Browser;
        System.Diagnostics.Trace.WriteLine(browser.Browser); // InternetExplorer
        System.Diagnostics.Trace.WriteLine(browser.MajorVersion); // 11
        return View();
    }

请注意,您需要安装有http://support.microsoft.com/kb/2836939/en-us的.NET 4.5或.NET 4.0才能正确检测IE11。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19999989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档