我卡在这 2 天了,找不到解决方案。 当我执行 AngularJS POST 时,它会在 header 中发送选项并从 API 返回错误,代码看起来没什么特别的。
$http.defaults.headers.post["Content-Type"] = "application/json";
$http.post(URL, JSON.stringify(data)).
success(function(data, status, headers, config) {
alert(data);
error(function(data, status, headers, config) {
console.log("Error");
});
CORS 在具有 header 的 API 上启用,当我在 Chrome 中使用 fiddler 或 POSTMan 进行 POST 时,只有当我使用 angularJS post 时它才能正常工作,它不会通过。
为什么我得到的是 OPTIONS/SubmitTicket HTTP/1.1 而不是 POST?
我需要做什么才能发布?我读过它说 CORS 正在添加 OPTIONS header ,但为什么呢?
最佳答案
当您调用 CORS 请求时,浏览器总是向服务器发送 OPTIONS 请求以了解实际允许的方法。所以这是期望的行为。这就是所谓的:“预检请求”,请参阅:http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/ (部分:“预检请求”)
因此,在您的情况下,您必须在 CORS 过滤器的“Access-Control-Allow-Methods” header 中允许 OPTIONS 方法。
关于javascript - angularJS 发送选项而不是 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30704283/