【发布时间】:2016-06-05 22:46:13
【问题描述】:
我在使用 ngResource 调用 Amazon Web Services 上的 REST API 时遇到此错误:
XMLHttpRequest 无法加载 http://server.apiurl.com:8000/s/login?login=facebook。回应 预检请求未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此,不允许访问源“http://localhost”。 错误 405
服务:
socialMarkt.factory('loginService', ['$resource', function ($resource) {
var apiAddress = "http://server.apiurl.com:8000/s/login/";
return $resource(apiAddress, {
login: "facebook",
access_token: "@access_token",
facebook_id: "@facebook_id"
}, {
getUser: {
method: 'POST'
}
});
}]);
控制器:
[...]
loginService.getUser(JSON.stringify(fbObj)),
function (data) {
console.log(data);
},
function (result) {
console.error('Error', result.status);
}
[...]
我正在使用 Chrome,但我不知道还有什么办法可以解决这个问题。我什至将服务器配置为接受来自 localhost 的标头。
【问题讨论】:
-
困惑:你是“配置服务器”还是这是“亚马逊网络服务上的休息 api”?
-
您显然做得还不够,无法在服务器端启用 CORS。发布响应标头示例
-
无论哪种方式,您的反对票都是错误的。他在他的本地机器上托管他的文件。他在后端做什么样的conf都没有关系。 Angular 不允许这种预飞行。
-
感谢 cmets,当我将浏览器设置为关闭安全时它起作用了
-
@Andre 但是关闭安全性只是一个丑陋的解决方法,您会损害安全性,并不能解决您的问题......
标签: javascript ajax http cors http-status-code-405