Javascript 如何允许ASP.NET的CORS
我在尝试从JS/Ajax向我的WebAPI发出请求时遇到问题。在我的解决方案中,我有一个发布在srv02:2400上的Web API和一个发布在srv02:2300上的网站 当我导航到页面时,页面加载良好,除了应该来自API的数据 我得到了一个错误:Javascript 如何允许ASP.NET的CORS,javascript,asp.net,ajax,cors,Javascript,Asp.net,Ajax,Cors,我在尝试从JS/Ajax向我的WebAPI发出请求时遇到问题。在我的解决方案中,我有一个发布在srv02:2400上的Web API和一个发布在srv02:2300上的网站 当我导航到页面时,页面加载良好,除了应该来自API的数据 我得到了一个错误: XMLHttpRequest cannot load http://srv02:2400/api/requests/find/1. Response to preflight request doesn't pass access control
XMLHttpRequest cannot load http://srv02:2400/api/requests/find/1. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://srv02:2300' is therefore not allowed access. The response had HTTP status code 400.
但是,如果我获取url并将其粘贴到浏览器中,就会得到正确的JSON列表
我试图通过以下方式,按照API中的建议,在全球范围内启用CORS:
var cors = new EnableCorsAttribute("http://srv02:2300", "*", "*");
config.EnableCors(cors);
var cors=新的EnableCorsAttribute(“,”,“,”);
配置使能cors(cors)$.ajax({
url: "http://srv02:2400/api/requests/find/" + id,
type: "GET",
dataType: 'json',
contentType: 'application/json',
success: function (requests) {
console.log('success');
},
error: function (err) {
if (err) {
console.log(err);
}
}
});
我尝试按照建议将json更改为jsonp,但没有成功
你知道怎么解决这个问题吗
谢谢大家! 您的全局属性看起来不正确 我想你想改变两件事
- 您的CORS url应该是您希望允许的应用程序的url(而不是API url),即
而不是:2300
李>:2400
- 您没有选择有效的标题和方法(动词)。您或者需要在这里使用特定的值,或者*(如果您在全局应用此值,这可能更有意义)
var cors = new EnableCorsAttribute("http://srv02:2300", "*", "*");
config.EnableCors(cors);
这应该指示浏览器(使用选项响应)如果他们想从
http://srv02:2300/*
对于任何动词或标题,都可以。如果另一个域尝试调用此API,它将不正常。您的全局属性看起来有误
我想你想改变两件事
- 您的CORS url应该是您希望允许的应用程序的url(而不是API url),即
而不是:2300
李>:2400
- 您没有选择有效的标题和方法(动词)。您或者需要在这里使用特定的值,或者*(如果您在全局应用此值,这可能更有意义)
var cors = new EnableCorsAttribute("http://srv02:2300", "*", "*");
config.EnableCors(cors);
这应该指示浏览器(使用选项响应)如果他们想从http://srv02:2300/*
对于任何动词或标题,都可以。如果另一个域尝试调用此API,它将不正常