LaravelでCORS設定を完全解説!初心者でもわかる他ドメインアクセス許可
生徒
「Laravelで作ったAPIに、別のサイトからアクセスしようとしたらエラーが出ました。どうしてですか?」
先生
「それはCORSという仕組みが関係しています。Webブラウザが安全のために通信を制限しているんです。」
生徒
「CORSって何ですか?設定しないとAPIは使えないんですか?」
先生
「設定すれば大丈夫です。Laravelでは決められた場所を編集するだけで対応できますよ。」
1. CORSとは何かを超やさしく理解しよう
CORSとはCross-Origin Resource Sharingの略で、日本語では「異なる場所からのアクセスを許可する仕組み」という意味です。 ここでいう「場所」とは、WebサイトのURLに含まれるドメインのことです。
例えば、https://example.comで動いている画面から、
https://api.sample.comのAPIを呼び出す場合、ドメインが違うため、そのままではブラウザが通信を止めます。
これは不正な通信や情報漏えいを防ぐための安全対策です。
CORSは「このドメインからのアクセスなら許可してよいですよ」とサーバー側が伝えるためのルールだと考えると分かりやすいです。 建物で例えると、受付で「この人は入っていいです」と許可証を出すイメージです。
2. LaravelでCORS設定が必要になる場面
LaravelでAPI開発をしていると、フロント画面とAPIを別々に作ることがよくあります。 例えば、画面はHTMLやJavaScriptで作り、APIはLaravelで作るといった形です。
このとき、画面とAPIのURLが違うと、ブラウザは「別のドメインからの通信」と判断します。 その結果、CORSエラーが発生し、APIが正しく動かなくなります。
つまり、LaravelでAPIを外部から使いたい場合、CORS設定はほぼ必須の作業になります。 初心者の方が最初につまずきやすいポイントでもあります。
3. Laravel標準のCORS設定ファイルを確認しよう
Laravelでは、最初からCORS設定用のファイルが用意されています。
それがconfig/cors.phpです。
このファイルを編集することで、他ドメインからのアクセス許可を管理できます。
設定ファイルとは、アプリ全体の動きを決めるためのメモ帳のようなものです。 難しい処理を書く場所ではなく、「どう動いてほしいか」を指定する場所だと考えてください。
4. cors.phpの基本設定を見てみよう
return [
'paths' => ['api/*'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_headers' => ['*'],
'supports_credentials' => false,
];
pathsは「どのURLにCORSを適用するか」を決めます。
api/*は、API用のURLすべてという意味です。
allowed_originsは「どこからのアクセスを許可するか」を指定します。
*は「すべて許可」という意味で、学習中や検証用によく使われます。
allowed_methodsやallowed_headersも、 「どんな通信方法や情報を許可するか」を決める項目です。 最初は深く考えず、すべて許可する設定でも問題ありません。
5. CORSはミドルウェアとして動いている
LaravelのCORSはミドルウェアとして動作しています。 ミドルウェアとは、リクエストが処理される前後にチェックを行う仕組みです。
例えるなら、学校の校門に立っている先生のような存在です。 中に入る前に「この人は入っていいか」を確認する役割があります。
CORSのミドルウェアは、アクセス元を確認し、 許可されていればAPIの処理に進ませるという働きをしています。
6. CORSエラーが出たときの考え方
CORSエラーが出た場合、Laravelの処理自体が失敗しているわけではありません。 多くの場合、ブラウザが安全のために通信を止めています。
そのため、エラーが出たら「CORS設定で許可されているか」を確認することが大切です。
特にallowed_originsの設定は、原因になりやすいポイントです。
LaravelでAPI開発を行う際は、 「CORSは通信の入り口でチェックされる仕組み」という考え方を持つと理解しやすくなります。