我在尝试从JS / Ajax向我的WebAPI发出请求时遇到问题。在我的解决方案中,我有一个发布在srv02:2400上的Web API和我的网站在srv02:2300上发布
当我导航到页面http:// srv02:2300 / all-requests.aspx时,该页面加载正常,除了应该来自我的API的数据
我收到错误:
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 http:// srv02:2400 / api / requests / find / 1并将其粘贴到浏览器中,它将为我提供正确的JSON列表!
我试图在全球范围内启用CORS作为建议在这里我通过API:
通过添加以下内容来更新我的WebApiConfig.cs:
var cors = new EnableCorsAttribute(“ http:// srv02:2400 ”,“ ”,“ ”); config.EnableCors(cors);
但是,这没有用。
如前所述,我正在以Ajax reqeusts的身份进行请求
$.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,因为在这里建议这样做,但是它不起作用。
关于如何在这里解决问题的任何想法。
谢谢!
您的全局属性看起来不对。
我认为您希望改变两件事。
:2300
not :2400
。例如,您需要以下内容:
var cors = new EnableCorsAttribute("http://srv02:2300", "*", "*");
config.EnableCors(cors);
这应该指示浏览器(使用OPTIONS响应),如果他们想http://srv02:2300/*
使用任何动词或标头来调用此API ,就可以了。如果另一个域尝试调用此API,那就不行了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句