跨域调用错误:XMLHttpRequest:网络错误0x80070005,访问被拒绝

时间:2017-10-25 02:36:31

标签: javascript asp.net-mvc xmlhttprequest cors networkcredentials

使用MVC Asp.Net

下面的代码适用于实际的用户名和密码。但我不想用它。 :

WebClient client1 = new WebClient();
client1.Credentials = new NetworkCredential("actualUserName", "actualPassword");
string code1 = client1.DownloadString(@"http://Domainname/GetValue");

尝试了javascript方法:

 $.ajax({
    type: 'POST',
    url: Url,
    processData: false,
    contentType: 'application/json; charset=utf-8',
    dataType: 'jsonp',
    crossDomain: true,
    jsonpCallback: 'CallBackMethod',
    success: function (json) {
        console.log(json); 
    },
    error: function (xhr, textStatus, errorThrown) {
        console.log(errorThrown);
    }
});

但是得到以下错误:

Multiple Access-Control-Allow-Origin headers are not allowed for CORS response.
XMLHttpRequest: Network Error 0x80070005, Access is denied.

尝试在Application_BeginRequest中添加Global.asax中的标头以及webconfig中的类似条目:

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");

if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
    HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
    HttpContext.Current.Response.End();
}

以上所有内容都经过了尝试,但Win7机器无法正常运行。但是从Win10机器上工作!!还尝试在服务器中部署并检查,但弹出相同的错误。

2 个答案:

答案 0 :(得分:0)

问题的关键在于错误消息:

  

不允许多个Access-Control-Allow-Origin标头

服务器正在响应重复的标头。这导致一些浏览器失败。你提到你在两个地方实现了CORS。这是一个很好的起点。删除一个实现,看看会发生什么。

还有一些框架可以实现CORS。最重要的是,你只需要一个,一个最好的。无论您保留什么实现,它都需要处理标准请求和预检请求(OPTIONS)。

答案 1 :(得分:0)

下面修正了问题:

IIS - >身份验证 - > Windows身份验证 - >提供商 - >删除谈判