My backbone.js
当我尝试将模型保存到位于另一个主机/URL 上的 Restful Web 服务时,应用程序抛出 HTTP OPTIONS not found 错误。
根据我的研究,我从中收集到post https://stackoverflow.com/questions/13727696/backbonejs-cors-and-save-method that :
请求会不断发送 OPTIONS http 请求标头,并且根本不会触发 POST 请求。
显然,带有“对用户数据造成副作用”的请求的 CORS 将使您的浏览器在实际发送您想要的 HTTP 请求方法之前,使用 OPTIONS 请求标头“预检”请求以检查是否批准。
我试图通过以下方式解决这个问题:
- 将 Backbone 中的 emulateHTTP 设置为 true。
Backbone.emulateHTTP = true;
应用程序崩溃时Backbone.emulateHTTP
引入了一行代码。
有没有一种方法可以响应 CodeIgniter RESTServer 中的 OPTIONS 请求,并且是否有其他替代方法可以允许从通话位置禁用此请求?
I found 这个在 Github 上 https://github.com/clockworkgeek/codeigniter-restserver-extra-verbs作为一种解决方案。我不确定是否应该使用它,因为它看起来有点过时了。
我遇到了完全相同的问题。为了解决这个问题,我在核心中有一个 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。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)