カテゴリ: Laravel 更新日: 2026/01/02

LaravelでCORS対応ミドルウェアを導入する方法!API開発初心者向けガイド

LaravelでCORS対応ミドルウェアを導入する方法(API開発)
LaravelでCORS対応ミドルウェアを導入する方法(API開発)

先生と生徒の会話形式で理解しよう

生徒

「先生、LaravelでAPIを作ったんですが、別のドメインからアクセスできないんです。どうしたら良いですか?」

先生

「それはCORSの問題です。CORSとは、Cross-Origin Resource Sharingの略で、異なるドメインからのアクセスを制御する仕組みです。」

生徒

「具体的にはどうやってLaravelで対応できますか?」

先生

「LaravelではCORS対応用のミドルウェアを導入するだけで簡単に設定できます。順を追って説明します。」

1. CORSとは?

1. CORSとは?
1. CORSとは?

CORSは、ブラウザがセキュリティのために実装している仕組みで、別のドメインから自分のAPIにアクセスすることを制限します。例えば、example.com で作ったAPIに anotherdomain.com からJavaScriptでアクセスしようとすると、CORSポリシーに違反するとアクセスがブロックされます。

API開発においては、異なるドメインやサブドメインからアクセスできるようにCORS対応を行うことが重要です。CORSを正しく設定することで、フロントエンドとバックエンドが安全に通信できます。

2. LaravelでCORS対応を確認

2. LaravelでCORS対応を確認
2. LaravelでCORS対応を確認

Laravel 7以降では、標準でCORS対応用のパッケージが組み込まれています。app/Http/Kernel.php に設定されている \Fruitcake\Cors\HandleCors::class がミドルウェアとして登録されており、APIルートに自動で適用可能です。

ただし、細かい設定を行う場合は config/cors.php を編集します。ここで、許可するオリジン、メソッド、ヘッダーなどを指定できます。

3. CORS設定の例

3. CORS設定の例
3. CORS設定の例

例えば、フロントエンドの http://localhost:3000 からAPIにアクセスしたい場合は、以下のように config/cors.php を編集します。


return [
    'paths' => ['api/*'],
    'allowed_methods' => ['*'],
    'allowed_origins' => ['http://localhost:3000'],
    'allowed_headers' => ['*'],
    'exposed_headers' => [],
    'max_age' => 0,
    'supports_credentials' => false,
];

この設定で、APIの /api/* に対して、指定したオリジンからのリクエストが許可されます。allowed_methods は許可するHTTPメソッド、allowed_headers は許可するヘッダーを指定します。

4. APIルートにミドルウェアを適用する

4. APIルートにミドルウェアを適用する
4. APIルートにミドルウェアを適用する

通常、CORSミドルウェアは api ルートグループに適用されます。routes/api.php を確認すると、デフォルトで api ミドルウェアが割り当てられています。


Route::middleware(['cors'])->group(function () {
    Route::get('/users', [UserController::class, 'index']);
    Route::post('/users', [UserController::class, 'store']);
});

このようにルートグループにCORSミドルウェアを指定することで、複数のAPIエンドポイントにまとめてCORS対応ができます。

5. 注意点とテスト方法

5. 注意点とテスト方法
5. 注意点とテスト方法

ブラウザでAPIをテストする場合、CORSが正しく設定されていないと Access to fetch at 'URL' from origin 'X' has been blocked by CORS policy のようなエラーが表示されます。CORS設定を更新したら、必ずブラウザやAPIクライアントで動作確認してください。

また、supports_credentials を true にすると、Cookieや認証情報を伴うリクエストも許可できますが、安全性に注意してください。開発環境では false のままで問題ありません。

6. まとめ的なポイント

6. まとめ的なポイント
6. まとめ的なポイント

LaravelでCORS対応ミドルウェアを導入すると、異なるドメインからAPIに安全にアクセスできるようになります。config/cors.php の設定で許可するオリジンやHTTPメソッドを指定し、ルートグループにミドルウェアを適用するだけで簡単に対応可能です。API開発ではCORS設定を正しく理解しておくことが重要です。

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelのコントローラでリクエストをログ出力する方法を初心者向けに解説
New2
Laravel
Laravelでモデルからデータを取得・保存・更新・削除する方法を完全ガイド!初心者でもわかるEloquent ORM入門
New3
Symfony
Symfonyのセッション管理完全ガイド!初心者でもわかるセッションドライバ設定(file・Redis)
New4
Laravel
Laravelのエラーメッセージをカスタマイズする方法|初心者向けガイド
人気記事
No.1
Java&Spring記事人気No1
Laravel
LaravelでBasic認証を実装するミドルウェアの使い方!初心者向けガイド
No.2
Java&Spring記事人気No2
Laravel
Laravelでモデルからデータを取得・保存・更新・削除する方法を完全ガイド!初心者でもわかるEloquent ORM入門
No.3
Java&Spring記事人気No3
Symfony
SymfonyでTwigテンプレートを表示する方法を完全ガイド!初心者にもわかるHTMLとの違いや使い方
No.4
Java&Spring記事人気No4
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.5
Java&Spring記事人気No5
Laravel
LaravelでファクトリとSeederを組み合わせてダミーデータを生成する方法!初心者でも簡単にテストデータ作成
No.6
Java&Spring記事人気No6
Symfony
Symfonyのコントローラでリダイレクトする方法を徹底解説!初心者にもやさしく解説
No.7
Java&Spring記事人気No7
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.8
Java&Spring記事人気No8
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)