簡體   English   中英

CakePHP 1.3 上的 CORS

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM