一尘不染

在codeigniter中启用cors(@chriskacerguis的restserver)

angularjs

当我的客户端应用和api位于本地主机时,agularJs控制器中的http.get请求可以正常工作。将api移至服务器时,出现问题。

客户端使用angularJs

$http.get('http://domain.com/api/spots/2/0').success(function(datas){
console.log(datas);
});

日志给出:跨域请求被阻止:同源策略禁止读取位于http://domain.com/api/spots/2/0的远程资源。可以通过将资源移至同一域或启用CORS来解决此问题。

我已经将这两行添加到我的控制器构造中

header("Access-Control-Allow-Origin: *");

header("Access-Control-Allow-Methods: GET");

还是一样的错误。


阅读 369

收藏
2020-07-04

共1个答案

一尘不染

尝试添加OPTIONS到允许的方法。

header("Access-Control-Allow-Methods: GET, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type, Content-Length, Accept-Encoding");

设置标头后,当请求为方法“ OPTIONS”时立即返回。

if ( "OPTIONS" === $_SERVER['REQUEST_METHOD'] ) {
    die();
}

Angular发送符合W3C CORS规范的预检请求,该请求将在实际尝试之前检查正确的允许方法。

就我个人而言,我发现Mozilla开发人员网络CORS页面在此问题上更易于阅读,以帮助理解CORS的流程。

2020-07-04