のぐそんブログ

暗いおじさんがシコシコ書くブログです。

Laravelでクロスオリジン(CORS)に対応メモ

Laravelでクロスオリジン(CORS)に対応する為のメモです。

LaravelはCORS用のライブラリがあるのでそちらを利用します。

ライブラリをインストールします。

$ composer require barryvdh/laravel-cors

Laravelのバージョンが5.5以下の場合はconfig/app.phpprovidersを変更します。

Barryvdh\Cors\ServiceProvider::class,

Laravelのバージョンは以下のコマンドで確認できます。

php artisan --version

要件に合わせて、app/Http/Kernel.phpを変更します。

全てのリクエストに対応する場合は、以下を変更します。

protected $middleware = [
    // ...
    \Barryvdh\Cors\HandleCors::class,
];

APIのみ対応する場合、以下を変更します。

protected $middlewareGroups = [
    'api' => [
        // ...
        \Barryvdh\Cors\HandleCors::class,
    ],
];

最後に設定ファイルを作成します。

php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider"

/config/cors.phpが作成されます。

細かな設定をする場合はこちらを変更していきます。

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Laravel CORS
    |--------------------------------------------------------------------------
    |
    | allowedOrigins, allowedHeaders and allowedMethods can be set to array('*')
    | to accept any value.
    |
    */

    //クッキーの送信およびBasic認証の許可
    'supportsCredentials' => false,
    //許可するドメイン
    'allowedOrigins' => ['*'],
    //許可するドメインを正規表現で指定
    'allowedOriginsPatterns' => [],
    //許可するヘッダー
    'allowedHeaders' => ['*'],
    //許可するメソッド
    'allowedMethods' => ['*'],
    //レスポンスに含めるカスタム HTTP ヘッダ
    'exposedHeaders' => [],
    //プリフライトリクエストの結果をキャッシュできる期間
    'maxAge' => 0,

];