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

标签 php angularjs codeigniter codeigniter-restserver

当我的客户端应用程序和 api 在本地主机中时,agularJs Controller 中的 http.get 请求工作正常。 当 api 被移动到服务器时,出现了问题。

客户端使用angularJs

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

日志给出: 跨源请求被阻止:同源策略不允许在 http://example.com/api/spots/2/0 读取远程资源.这可以通过将资源移动到同一域或启用 CORS 来解决。

我已将这两行添加到我的 Controller 构造中

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

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

还是一样的错误。

最佳答案

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

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

一旦您设置了 header ,当请求是方法“OPTIONS”时立即返回。

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

另见 this answer .

Angular 发送一个 W3C CORS spec compliant preflight request这将在实际尝试之前检查正确的允许方法。

就我个人而言,我发现 Mozilla Developer Network CORS page在这个问题上更容易阅读,以帮助理解 CORS 的流程。

关于php - 在 codeigniter 中启用 cors(@chriskacerguis 的 restserver),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25702991/

相关文章:

javascript - 如何让我平滑滚动?

PHP undefined variable 问题

php - codeigniter session 同时交换多个请求

mysql - sql 中不区分大小写的 order_by - Codeigniter

php - 试图获取非对象的属性

php - MySQL数据库表中找不到数据,如何编写php代码?

php - mysql SELECT distinct row from col1 WHERE col2=x

javascript - Angular 在提供者中注入(inject) $rootScope

javascript - 数据表行选择的 Angular 数据绑定(bind)

angularjs - 使用 cellTemplate 时,ui 网格过滤和排序不起作用