JSONレスポンスのcross domain対応 for Laravel

Laravelでhttp headerにAccess-Control-Allow-Originを追加

chromeコンソールに以下のエラーが表示される

jQueryでAjaxリクエストを送信したところ、以下のエラーが返ってきた。

XMLHttpRequest cannot load http://laravel.local/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 500.

異なるドメインのリソースに対してHTTPリクエストを実行する場合には、REST API側でアクセスを許可するためのレスポンスヘッダ(Access-Control-Allow-Origin)を付加する必要があります。Access-Control-Allow-Originで設定されていないURIからのリクエストはブラウザでエラーが表示されます。

Laravelでレスポンスヘッダを設定

JSONのレスポンスオブジェクトを生成し、ヘッダを追加してreturnする方法です。

$todos = Todo::all();

$response = Response::json($todos);
$response->headers->set('Access-Control-Allow-Origin', '*');
return $response;

同等のコードをまとめて書くことも可能です。

return Response::json(
  $todos,
  '200',
  array('Access-Control-Allow-Origin' => '*')
);

3番目の引数は配列を指定し、Access-Control-Allow-Origin以外のヘッダを複数設定することが出来ます。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

JSONレスポンスのcross domain対応 for Laravelの記事にコメントを投稿