10

AppController で次のようにすべてのリクエストにアクセスできるように、CakePHP に組み込まれた API の CORS を有効にしようとしています。

public function beforeFilter()
{
    header("Access-Control-Allow-Origin: *");
}

これは間違った場所にありますか?リクエストがまだブロックされているためです。

更新:これは実際には機能するようですが、私は次のようなことをしているためです:

header('Content-Type: application/json');
echo json_encode(array('message'=>'Hello world!'));

私のメソッドのいくつかでは、AppController を設定したヘッダーをオーバーライドしているように動作しているため、JSON 呼び出しの応答には表示されません。何か案は?

更新 2: 以下のように JSON を返すと、問題が修正されます。

$this->response->type('json');
$this->response->body(json_encode(array('message'=>'Hello world!')));

どうやらheader()Cakeで使用すると以前のヘッダーが壊れますか?

4

2 に答える 2

-2

私がここで見つけたことに基づいて: Sending correct JSON content type for CakePHP

CakePHP で JSON を返す正しい方法は次のようになります。

$this->response->type('json');
$this->response->body(json_encode(array('message'=>'Hello world!')));

これは、ヘッダーが上書きされる可能性があるため、Cake の応答オブジェクトを使用して「適切な」方法で実行しない限り、CORS が機能しないためです。

于 2013-02-18T23:45:00.817 に答える