首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >服务器端的浏览器检测错误

服务器端的浏览器检测错误
EN

Stack Overflow用户
提问于 2014-10-29 07:16:45
回答 1查看 1.1K关注 0票数 3

我有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“,这是错误的。

代码语言:javascript
复制
var browserName = Request.Browser.Browser;

我希望browserName被定义为"Opera“。我尝试过重写对象Request.Browser的创建。

解决方案1:

我创建了"browserCaps.config“文件,并在这个文件中添加了用于Opera的xml元素。

代码语言:javascript
复制
<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":

代码语言:javascript
复制
<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“。我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2014-12-30 09:14:35

如果您只需要识别浏览器的功能,那么如果应用程序将Opera浏览器识别为Chrome,您就不会犯错误。

Opera去年已经用WebKit完全改变了他们的渲染引擎,所以如果你把内容提供给Chrome或Opera或任何其他WebKit支持的浏览器,那就没有什么不同了。

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

https://stackoverflow.com/questions/26624646

复制
相关文章

相似问题

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