gpt4 book ai didi

asp.net-core - ASP.NET Core 中服务器端检测浏览器是否为 Internet Explorer

转载 作者:行者123 更新时间:2023-12-03 03:03:44 24 4
gpt4 key购买 nike

我正在尝试确定浏览器是否是服务器端 ASP.NET Core 中的 Internet Explorer。

在我的 cshtml 中的先前 ASP.NET 4 版本中:

@if (Request.Browser.Browser == "IE")
{
//show some content
}

但在 ASP.NET 5/ASP.NET Core 中,Context.Request 的智能感知没有浏览器的选项

我可以获得 UserAgent,但这看起来相当复杂,因为 IE 有多种类型的字符串

Context.Request.Headers["User-Agent"]

对于 Internet Explorer 11.0,我明白

 Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko

这使得从中确定任何过去、当前或 future 的 IE 版本变得非常困难。

最佳答案

我觉得有义务说,如果可以的话,通常最好尝试避免服务器端浏览器嗅探。但我完全意识到有时它是有帮助的。所以...

基于此列表http://www.useragentstring.com/pages/useragentstring.php?name=Internet+Explorer看起来几乎所有版本的 Internet Explorer 的 UserAgent 都包含 MSIE,因此这将是您要查找的主要内容。

有趣的是,在查看此 IE 用户代理列表时,您观察到的用户代理是极少数不包含 MSIE 的用户代理之一。如果您检查用户代理中是否存在 MSIE 或 Trident,它们应该可以很好地识别 Internet Explorer 的所有情况。

(Trident 是为 Internet Explorer 提供支持的布局引擎,并且仅用于 Internet Explorer)

例如,判断浏览器是否为 IE 的代码可以写为:

public static bool IsInternetExplorer(string userAgent) {
if(userAgent.Contains("MSIE") || userAgent.Contains("Trident")) {
return true;
} else {
return false;
}
}

这可以从 Controller 内部调用,如下所示:

string userAgent = Request.Headers["User-Agent"];

if(IsInternetExplorer(userAgent)) {
//Do your special IE stuff here

} else {
//Do your non IE stuff here
}

关于asp.net-core - ASP.NET Core 中服务器端检测浏览器是否为 Internet Explorer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37206185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com