【发布时间】:2016-09-23 10:46:24
【问题描述】:
我正在尝试从 WepApi2 控制器获取 json 响应
[EnableCors(origin = "*", methods = "*", headers = "*")]
public class DataController {
public IEnumerable<int> GetData(RequestItems items) {
...
}
}
使用它来尝试获取数据...
$.ajax({
type: "POST",
method: "POST",
contentType: "application/json",
url: "https://api.mysite.com/api/Data/GetData",
data: JSON.stringify({ /* some data here */ }),
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "*",
"Access-Control-Allow-Headers": "*"
},
xhrFields: {
withCredentials: true
},
success: function(xhr) {
console.log(xhr);
},
error: function(e) {
console.log(e);
}
});
我得到了这个......
跨域请求被阻止:同源策略不允许读取 远程资源在 https://api.mysite.com/api/Data/GetData。 (原因:CORS 标头 'Access-Control-Allow-Origin' 与 '*' 不匹配)
我几乎在网上找到了关于 CORS 和 jQuery 的所有信息,但我不知道该怎么做。请帮忙!
【问题讨论】:
-
仅供参考,ASP.NET WebApi 的 CORS 包已安装,因此 EnabedCors
-
如果我必须调试它,我会打开浏览器的开发工具,转到网络选项卡并查看 HTTP 标头。我假设 jQuery 期望 Access-Control-Allow-Origin 为 *,但标头丢失或设置为不同的值。
标签: jquery asp.net-web-api cors