使用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机器上工作!!还尝试在服务器中部署并检查,但弹出相同的错误。
答案 0 :(得分:0)
问题的关键在于错误消息:
不允许多个Access-Control-Allow-Origin标头
服务器正在响应重复的标头。这导致一些浏览器失败。你提到你在两个地方实现了CORS。这是一个很好的起点。删除一个实现,看看会发生什么。
还有一些框架可以实现CORS。最重要的是,你只需要一个,一个最好的。无论您保留什么实现,它都需要处理标准请求和预检请求(OPTIONS)。
答案 1 :(得分:0)
下面修正了问题:
IIS - >身份验证 - > Windows身份验证 - >提供商 - >删除谈判