小编Cha*_*had的帖子

.Net 4.0网站无法识别一些基于AppleWebKit的浏览器

我们看到一些Safari浏览器在从.NET 3.5升级到.NET 4.0后无法对我们的网站进行交叉验证.

经过大量调查,结果证明ASP.NET正确识别Safari浏览器存在问题.ASP.NET将一些Safari(可能是其他基于WebKit的浏览器)标识为Mozilla Version 0.0.不支持cookie,框架,JavaScript等的浏览器.NET 3.5在识别这些浏览器时没有任何问题.

我们已将测试简化为简单的HTTP处理程序(在vanilla 4.0网站上运行),该处理程序仅返回请求程序的浏览器功能.

以下是一些无法识别的用户代理(它们被标识为Mozilla 0.0):

  • Mozilla/5.0+(Macintosh;+U;+Intel+Mac+OS+X+10_5_8;+en-us)+AppleWebKit/533.19.4+(KHTML,+like+Gecko)+Version/5.0.3+Safari/533.19.4
  • Mozilla/5.0+(Macintosh;+U;+Intel+Mac+OS+X+10_6_2;+en-us)+AppleWebKit/531.9+(KHTML,+like+Gecko)
  • Mozilla/5.0+(Macintosh;+U;+Intel+Mac+OS+X+10_6_7;+en-us)+AppleWebKit/533.20.25+(KHTML,+like+Gecko)+Version/5.0.4+Safari/533.20.27
  • Mozilla/5.0+(Macintosh;+U;+Intel+Mac+OS+X+10_6_6;+en-us)+AppleWebKit/533.18.1+(KHTML,+like+Gecko)

处理程序代码如下所示:

<%@ WebHandler Language="C#" Class="PowershellTemporaryHandler" %>

using System;
using System.Web;
using System.Web.Security;

public class PowershellTemporaryHandler : IHttpHandler
{
    public bool IsReusable
    {
        get { return true; }
    }

    public void ProcessRequest(HttpContext context)
    {        
        HttpBrowserCapabilities hbc = context.Request.Browser;
        context.Response.Write("Type=" + hbc.Type + "<br>");
        context.Response.Write("Name=" + hbc.Browser + "<br>");
        context.Response.Write("Version=" + hbc.Version + "<br>");
        context.Response.Write("Major Version=" + hbc.MajorVersion + "<br>");
        context.Response.Write("Minor Version=" + hbc.MinorVersion + "<br>");
        context.Response.Write("Platform=" …
Run Code Online (Sandbox Code Playgroud)

safari cross-browser .net-4.0 asp.net-4.0

15
推荐指数
2
解决办法
8465
查看次数

标签 统计

.net-4.0 ×1

asp.net-4.0 ×1

cross-browser ×1

safari ×1