![](/img/trans.png)
[英]How to send DELETE request to phil sturgeon's - codeigniter-restserver
[英]HTTP OPTIONS error in Phil Sturgeon's Codeigniter Restserver and Backbone.js
當我嘗試將模型保存到位於另一個主機/ URL上的restful Web服務時,我的backbone.js
應用程序拋出了HTTP OPTIONS not found錯誤。
根據我的研究,我從這篇文章中收集到:
請求將不斷發送OPTIONS http請求標頭,並且根本不會觸發POST請求。
顯然CORS的請求將“對用戶數據產生副作用”將使您的瀏覽器“預檢”帶有OPTIONS請求標頭的請求以檢查批准,然后再實際發送您的預期HTTP請求方法。
我試圖繞過這個:
Backbone.emulateHTTP = true;
我還允許在標題中允許所有CORS和CSRF選項。
header('Access-Control-Allow-Origin:*');
header(“Access-Control-Allow-Headers:Origin,X-Requested-With,Content-Type,Accept”); header(“Access-Control-Allow-Methods:GET,POST,OPTIONS”);
當引入Backbone.emulateHTTP
代碼行時,應用程序崩潰了。
有沒有辦法在CodeIgniter RESTServer中響應OPTIONS請求,是否還有其他選擇允許從談話地點禁用此請求?
我遇到了完全相同的問題。 為了解決這個問題,我在核心中有一個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
屬性以排除options方法。 以前版本的REST_controller對OPTIONS沒有任何作用,添加此行似乎模仿了這種行為:
protected $allowed_http_methods = array('get', 'delete', 'post', 'put');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.