对预检请求的响应未通过访问控制检查

新手上路,请多包涵

我使用 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 许可协议

阅读 1.7k
2 个回答

我的“API 服务器”是一个 PHP 应用程序,所以为了解决这个问题,我找到了以下解决方案:

将这些行放在文件 index.php 中:

 header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');

原文由 Slipstream 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题