我有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:
我添加了一个文件&#34; opera.browser&#34;到文件夹&#34; App_Browsers&#34;:
<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
定义为&#34; Opera&#34;,但后来我发送了来自Chrome userAgent的第二个请求,而browserName
仍然定义为& #34;歌剧&#34 ;.我做错了什么?
答案 0 :(得分:0)
如果您只需要识别浏览器的功能,那么如果应用程序将Opera浏览器识别为Chrome浏览器,则不会出错。
去年,Opera已经完全用WebKit切换了他们的渲染引擎,所以在将内容提供给Chrome或Opera或任何其他基于WebKit的浏览器时,它确实没有任何差别。