POST request with AngularJS fails with preflight OPTION status code = 404 with CodeIgniter ResetServer

旧巷老猫 提交于 2019-12-03 21:44:55
Édouard Lopez

As I described in my answer on the CodeIgniter bug tracker for this "issue" #313, there is several solutions.

Application wide

I found a solution from HTTP OPTIONS error in Phil Sturgeon's Codeigniter Restserver and Backbone.js, which is to remove otpions from the list of value in $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');

Resource's focused

Another solution is to simply implement the index_options().

It didn't work for me the first time due to a typo (it's OPTIONS is plural ). And with this solution no more need to temper with applications/libraries/REST_Controller.php:

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

Now the preflight OPTION request is always true so the POST request is sent and everything works :)

Yes you have to add the index_options() method.

I had the same problem and it only worked when i added the OPTIONS method with the same arguments as my POST method.

Roxana Sagarra

in my case it was a routing problem.

What I did is overide the 404 routing. After that, the request got through the routing and the rest server did all the rest.

This is what I put in my routes.php:

$route['404_override'] = 'auth/options';
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!