我backbone.js
应用程序抛出未找到HTTP OPTIONS错误,当我尝试将模型保存到位于第另一台主机/ URL我的RESTful Web服务。
根据我的研究,我从这个收集后认为:
一个请求将不断发送OPTIONS HTTP请求头,而不是在所有触发POST请求。
与要求,将“上的用户数据产生副作用的”将让你的浏览器“预检”的与OPTIONS请求头请求检查审批,实际上是发送了您的预期HTTP请求方法之前显然CORS。
我试图让这个由各地:
- 在骨干Settting emulateHTTP为true。
Backbone.emulateHTTP = TRUE;
在当应用程序崩溃Backbone.emulateHTTP
介绍的代码行。
是否有办法应对选项笨RESTServer要求以及是否有任何其他的替代品,以允许或者禁用自说自话的地方申请?
我发现这个在Github溶为一体。 我不知道,因为它似乎有点过时,我应该使用它。
我遇到过一模一样的问题。 为了解决这个问题我有一个MY_REST_Controller.php核心和我所有的REST API的控制器使用它作为一个基类。 我只是增加了一个构造函数这样来处理OPTIONS请求。
function __construct() {
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
$method = $_SERVER['REQUEST_METHOD'];
if($method == "OPTIONS") {
die();
}
parent::__construct();
}
这只是检查该请求类型是OPTIONS并且如果是这样只是模具外面返回代码200的请求。
您还可以修改$allowed_http_methods
在子类中排除的选项方法属性。 REST_controller以前的版本没有做任何与选项 ,并添加这一行似乎模仿行为:
protected $allowed_http_methods = array('get', 'delete', 'post', 'put');
文章来源: HTTP OPTIONS error in Phil Sturgeon's Codeigniter Restserver and Backbone.js