所以在我的代码中我有:
return Request.Browser.Browser + " " + Request.Browser.MajorVersion
当我使用 Opera 时,我有版本 21,现在是最新版本 33,但我的代码总是返回 Chrome。它为 Opera 21 返回“Chrome 34”,为 Opera 33 返回“Chrome 46”。
为什么会发生这种情况,我该如何解决?
所以在我的代码中我有:
return Request.Browser.Browser + " " + Request.Browser.MajorVersion
当我使用 Opera 时,我有版本 21,现在是最新版本 33,但我的代码总是返回 Chrome。它为 Opera 21 返回“Chrome 34”,为 Opera 33 返回“Chrome 46”。
为什么会发生这种情况,我该如何解决?
Chrome 和 Opera 的用户代理字符串几乎完全相同。只有结局不同。
我使用的是 Opera 版本 33.0.1990.58,Chrome 版本是 46.0.2490.86。
这是我从每个人那里得到的用户代理:
Chrome 46 = Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, 像 Gecko) Chrome/46.0.2490.86 Safari/537.36
Opera 33 = Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36 OPR/33.0.1990.58
在 Microsoft.NET/Framework/YOURVERSION/Config/Browsers 中,您可以看到显示 .NET 如何解析代理字符串的 XML。chrome.browser 标识为:在 .NET 4.0 中。
在同一目录中,Opera.browser 标识如下所示:/" />。
因此 Opera 将自己显示为 Chrome,因为 .NET 不知道任何更好的正弦 Opera 用户代理不适合 .NET 正在寻找的正则表达式。