Laravel

Laravelでクロスオリジン(CORS)に対応するために「barryvdh/laravel-cors」を使ってみましょう。この記事では「barryvdh/laravel-cors」の導入方法と適切な設定について解説します。

barryvdh/laravel-corsを導入

comoserでインストール

comoserで「barryvdh/laravel-cors」を入れていきます。

Laravelのバージョンが5.5未満の場合にはバージョンを指定します。

Middlewareに追加

「app/Http/Kernel.php」の「$middleware」に「\Barryvdh\Cors\HandleCors::class」を追加します。

APIのみにCORSを設定する場合などは$middlewareGroupsのapiに追加します。

configファイルを作成

下記コマンドを実行します。

「vendor/barryvdh/laravel-cors/config/cors.php」を元に「config/cors.php」が作成されます。

CORSのための設定

生成された「config/cors.php」はデフォルトの設定なので編集していきます。

supportsCredentials

Cookie、承認ヘッダー、または TLS クライアント証明書などの許可設定です。
デフォルトは無効になります。

allowedOrigins

許可するアクセス元の指定です。デフォルトは全てになっているので注意!

上記のように本番環境以外では全て許可などにすると開発しやすいかも?その場合には.envに許可するURLを入れておきます。

allowedOriginsPatterns

allowedOriginsをパターン(正規表現)で指定することができます

allowedHeaders

許可するヘッダーを指定します。

allowedMethods

許可するHTTPメソッドを指定します。デフォルトは全て許可(*)です。
配列で複数を指定になっています。

exposedHeaders

レスポンスに含めるカスタム HTTP ヘッダ (デフォルトは含まれるヘッダ無し)

maxAge

キャッシュの有効期限の設定です。
秒数で指定します。

動作を確認

curlでリクエストして確認を行いましょう。
Originの指定で許可しているドメインからのアクセスを確認することができます。

アクセスできる場合

許可されているリクエストだった場合 200 OKが返ります。

アクセスできない場合

許可されてないリクエストだった場合 403 Forbiddenが返ります。

まとめ

この記事を書いた人

鳥井 慎太郎
鳥井 慎太郎
Web事業家/ブロガー
毎日楽しい。 個人開発(Webサービス、ゲームアプリ)