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以外のヘッダを複数設定することが出来ます。