我有ASP.NET MVC 4应用程序,我在服务器端的浏览器检测方面有问题。客户端带有Opera userAgent "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36 OPR/25.0.1614.63"发送请求,但在服务器端浏览器名定义为"Chrome“,这是错误的。
var browserName = Request.Browser.Browser;我希望browserName被定义为"Opera“。我尝试过重写对象Request.Browser的创建。
解决方案1:
我创建了"browserCaps.config“文件,并在这个文件中添加了用于Opera的xml元素。
<browserCaps>
<use var="HTTP_USER_AGENT" />
...
<case match="Chrome/\d+\.\d+\.\d+.\d+\sSafari/\d+\.\d+\sOPR/(?'version'(?'major'\d+)(?'minor'\.\d+)\.\d+.\d+)">
browser=Opera
version=${version}
majorversion=${major}
minorversion=${minor}
</case>
...
</browserCaps>它运行良好,但我不喜欢这个解决方案,因为它覆盖了所有浏览器的功能,我需要手动更新它。
解决方案2:
我在文件夹"opera.browser“中添加了一个文件"App_Browsers":
<browsers>
<browser id="Opera" parentID="Chrome">
<identification>
<userAgent match="OPR/(?'version'(?'major'\d+)(\.(?'minor'\d+)?)\w*)" />
</identification>
<capabilities>
<capability name="browser" value="Opera" />
<capability name="majorversion" value="${major}" />
<capability name="minorversion" value="${minor}" />
<capability name="type" value="Opera${major}" />
<capability name="version" value="${version}" />
</capabilities>
</browser>
</browsers>我首先发送了Opera userAgent的请求,然后browserName定义为"Opera",然后我发送了来自Chrome的第二个请求,browserName仍然定义为"Opera“。我做错了什么?
发布于 2014-12-30 09:14:35
如果您只需要识别浏览器的功能,那么如果应用程序将Opera浏览器识别为Chrome,您就不会犯错误。
Opera去年已经用WebKit完全改变了他们的渲染引擎,所以如果你把内容提供给Chrome或Opera或任何其他WebKit支持的浏览器,那就没有什么不同了。
https://stackoverflow.com/questions/26624646
复制相似问题