【发布时间】:2017-03-22 16:18:10
【问题描述】:
我在尝试从 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 中推荐 here:
- 安装包 Microsoft.AspNet.WebApi.Cors
-
通过添加以下内容更新我的 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,因为这是推荐的 here,但它不起作用。
关于如何在这里解决问题的任何想法。
谢谢!
【问题讨论】:
标签: javascript asp.net ajax cors