首页 文章

Angular 4 Http请求与codeigniter API错误与CORS,无法访问API函数

提问于
浏览
0

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

[火狐]:

跨源请求已阻止:同源策略不允许在http://lvh.me/ci-abc/api/get_alltasks上读取远程资源 . (原因:缺少CORS Headers 'Access-Control-Allow-Origin') .

[铬]:

无法加载http://lvh.me/ci-abc/api/get_alltasks:请求的资源上没有“Access-Control-Allow-Origin”标头 . 因此不允许来源'http:// localhost:4200'访问 .

我已经尝试将API URL更改为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

    CORS on PHP

    浏览器为从XMLHttpRequest或Fetch API中发起的跨站点请求发送特定的HTTP标头 . 它还希望看到通过跨站点响应发回的特定HTTP标头 . 这些标头的概述,包括启动请求和处理来自服务器的响应的示例JavaScript代码,以及每个标头的讨论,可以在HTTP访问控制(CORS)文章中找到,并应作为配套文章阅读这个 . 应该作为本文的配套文章阅读 . 本文介绍如何在PHP中处理访问控制请求和制定访问控制响应 .

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

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

    它's not Angular problem, the problem caused because you'与您的服务器不在同一个域中,例如,如果您尝试从 johndoe.comexample.com 发送请求,您将收到错误,并且它的浏览器会阻止该请求!

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

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

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

    看看这个answer

相关问题