[英]CORS on CakePHP 1.3
我正在 CakePHP 1.3 中創建一個 JSON 網絡服務。
我希望能夠將 AJAX 請求從不同的服務器發送到此 Web 服務。
我知道這在 Cake 2+ 中很簡單,但我終生無法在 v1.3 中弄清楚。 根據我在 docs 中找到的內容,我在控制器中嘗試了以下操作:
public $components = array('RequestHandler');
function beforeFilter() {
Configure::write('debug', 0);
$this->header('Access-Control-Allow-Origin','*');
$this->header('Access-Control-Allow-Methods','*');
$this->header('Access-Control-Allow-Headers','X-Requested-With');
$this->header('Access-Control-Allow-Headers','Content-Type, x-xsrf-token');
$this->header('Access-Control-Max-Age','172800');
}
不幸的是,這會導致500 ERR_INVALID_RESPONSE
。
我試圖做$this->response->header
而不是$this->header
,同樣的問題。 我也嘗試過header
而不是$this->header
,我再次收到服務器響應500
。 我還嘗試將header
塊移動到我在控制器中的操作中、頂級 app_controller.php 文件、bootstrap.php 文件和視圖文件本身(帶有header
每個變體, $this->header
,和$this->response->header
嘗試)。 刪除Configure::write('debug', 0);
不能解決問題。
哎呀,我什至在我的.htaccess
文件中有這個:
<IfModule mod_headers.c>
<FilesMatch "\.(json)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>
雖然這似乎沒有任何作用。 我在 Apache 的 mods-available 文件夾中也有mod_headers.load
。
有人知道如何在 CakePHP 1.3 中設置 Access-Control-Allow-Origin 標頭嗎?
header("Access-Control-Allow-Origin: *");
我知道這是一個舊帖子,但我只是想回答這個問題以幫助其他人。
@Restie 的回答是正確的,但不清楚為什么。 在 CakePHP 1.3 中,在控制器庫中,header 方法只是 PHP header
函數的包裝器:
function header($status) {
header($status);
}
所以$this->header
應該可以完美運行。 錯誤是復制了帶有兩個參數的用於設置標頭的 Java 樣式:
$this->header('Access-Control-Allow-Origin','*');
對於 PHP 中的header
,您必須將其切換為:
$this->header('Access-Control-Allow-Origin: *');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.