使用CORS的codeigniter API错误的Angular 4 Http请求无法访问API函数

时间:2017-12-16 12:02:19

标签: php angular api codeigniter

我在localhost(xampp)/ codeigniter上有api,我试图通过角度4访问它,浏览器一直在控制台中显示此错误。 api在邮递员工作正常。

[火狐]:

  

阻止跨源请求:同源策略禁止在http://lvh.me/ci-abc/api/get_alltasks读取远程资源。 (原因:缺少CORS标题'Access-Control-Allow-Origin'。

[铬]:

  

无法加载http://lvh.me/ci-abc/api/get_alltasks:否   请求中存在“Access-Control-Allow-Origin”标头   资源。因此不允许来源“http://localhost:4200”   访问。

我已尝试将API网址更改为localhost和127.0.0.1,但无效。我是一名初学者,如果我错过了什么,请原谅我。

Angular 4中的服务功能

gettasks()
  {
    return this.http.get('http://lvh.me/ci-abc/api/get_alltasks')
    .map(res=>res.json());
  }
codeigniter中的API函数

function get_alltasks_get()
    {
        {
            $result = $this->todo_model->get_alltasks();

            if ($result) {
                $this->response($result, 200);
            } else {
                $this->response("No record found", 404);
            }
        }
    }

2 个答案:

答案 0 :(得分:1)

这不是Angular问题,因为您与服务器不在同一个域中而导致的问题,例如,如果您尝试从{example.comjohndoe.com发送请求1}}您将收到错误,它会阻止请求的浏览器!

浏览器首先发出header请求,如果允许请求,将发出具有真实方法类型的下一个请求。

对于CodeIgniter,尝试将OPTIONS添加到允许的方法中。

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

看看这个answer

答案 1 :(得分:0)

关于PHP的CORS

  

浏览器会针对跨网站请求发送特定HTTP headers   从XMLHttpRequestFetch API开始。它   还希望看到使用跨站点发回的特定HTTP标头   响应。

     

这些标头的概述,包括示例JavaScript代码   发起请求并处理来自服务器的响应,以及   讨论每个标题can be found in the HTTP Access Control (CORS)文章,并应作为相关文章阅读   之一。

     

应该作为本文的配套文章阅读。 This article涵盖处理访问控制请求和   在PHP中制定访问控制响应

如果您无权配置Apache,您仍然可以从PHP脚本发送标头。这是在PHP脚本中添加以下内容的一种情况:

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