【问题标题】:POST request with AngularJS fails with preflight OPTION status code = 404 with CodeIgniter ResetServer使用 AngularJS 的 POST 请求失败,预检 OPTION 状态代码 = 404,带有 CodeIgniter ResetServer
【发布时间】:2014-07-20 04:53:36
【问题描述】:

我的前端应用程序在grunt 实时服务器上运行,端口为9100,而我的PHP 服务器在端口80 上。主机是一样的,只是端口不同。

当我向http://dev.site.dev/api/gist 发送带有一些JSON 数据的POST 请求时,我在预检OPTIONS 请求中收到错误404

我已经在 apache 配置中添加了 CORS 标头:

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "X-Requested-With, accept, content-type"
Header set Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

``` 并重新启动服务器,但问题仍然存在。

我应该在我的gist 控制器中添加一个index_option() 方法吗?还是问题出在其他地方?

【问题讨论】:

    标签: angularjs codeigniter http-post cors codeigniter-restserver


    【解决方案1】:

    在我的情况下,这是一个路由问题。

    我所做的是覆盖 404 路由。之后,请求通过路由,其余的服务器完成。

    这是我在 routes.php 中放入的内容:

    $route['404_override'] = 'auth/options';
    

    【讨论】:

      【解决方案2】:

      正如我在answer on the CodeIgniter bug tracker for this "issue" #313 中所述,有几种解决方案。

      应用范围

      我从HTTP OPTIONS error in Phil Sturgeon's Codeigniter Restserver and Backbone.js找到了一个解决办法,就是把otpions$allowed_http_methods的值列表中去掉:

      // protected $allowed_http_methods = array('get', 'delete', 'post', 'put', 'options', 'patch', 'head');
         protected $allowed_http_methods = array('get', 'delete', 'post', 'put', 'patch', 'head');
      

      资源的重点

      另一种解决方案是简单地实现index_options()

      由于错字(它是 OPTIONS 是复数),它第一次对我不起作用。有了这个解决方案,就不再需要applications/libraries/REST_Controller.php

      public function index_options() {
          return $this->response(NULL, 200);
      }
      

      现在预检OPTION 请求始终为真,因此POST 请求已发送并且一切正常:)

      【讨论】:

      • 这是一个出色的答案谢谢 ;)
      【解决方案3】:

      是的,您必须添加 index_options() 方法。

      我遇到了同样的问题,只有当我添加了与我的 POST 方法具有相同参数的 OPTIONS 方法时它才有效。

      【讨论】:

        猜你喜欢
        • 2016-02-13
        • 1970-01-01
        • 1970-01-01
        • 2016-12-19
        • 2020-09-18
        • 2021-04-10
        • 2019-10-12
        • 2023-01-21
        • 2019-09-08
        相关资源
        最近更新 更多