我使用 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
的标头。
原文由 Andre Mendes 发布,翻译遵循 CC BY-SA 4.0 许可协议
我的“API 服务器”是一个 PHP 应用程序,所以为了解决这个问题,我找到了以下解决方案:
将这些行放在文件 index.php 中: