LoginSignup
4
6

More than 3 years have passed since last update.

Laravel7でのCors対応について

Last updated at Posted at 2020-03-26

Corsとは

ブラウザでは同一でのドメイン間でのアクセスしかできないようになっています
そのため、異なるドメインへのアクセス(APIなど)と通信することができないのですが
それを解決するために使用するのがCorsです

例えば、Laravel側でlocalhost:8000でNuxt側でlocalhost:3000で動かしていた場合
localhost:3000のNuxt側からaxiosなどを使ってlocalhost:8000のLaravel側のAPIにアクセスができません
それをクロスドメインアクセスを可能にする事ができます

Larvel7でのCors

ここからが本題何ですが、Cors対応しようと思い
今まで通りcomposerでインストールしようと思いconfigフォルダをみてみると
あれ?cors.phpがある!
という事に今頃気付きました。

今までやってた作業しなくてもLaravel7では必要ない?みたいですね

app/Http/Kernel.phpを見てみても$middleware\Fruitcake\Cors\HandleCors::classの記載もありました

cors.phpの中身をみてみる

cors.php
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Cross-Origin Resource Sharing (CORS) Configuration
    |--------------------------------------------------------------------------
    |
    | Here you may configure your settings for cross-origin resource sharing
    | or "CORS". This determines what cross-origin operations may execute
    | in web browsers. You are free to adjust these settings as needed.
    |
    | To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
    |
    */

    'paths' => ['api/*'],

    'allowed_methods' => ['*'],

    'allowed_origins' => ['*'],

    'allowed_origins_patterns' => [],

    'allowed_headers' => ['*'],

    'exposed_headers' => false,

    'max_age' => false,

    'supports_credentials' => false,

];

apiからのアクセスは全て許可する設定になってるようで
これは今後LaravelではCors対応を手動でする必要がなくなったってことですかね?
とても助かりますね。。
と言うただ自分の中で発見があっただけの記事です

ついでにcors.phpの設定項目について自分のわかっている範囲で説明入れておきます

cors.phpの設定項目

cors.phpの各設定項目について少し触れておきます

cors.php
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Cross-Origin Resource Sharing (CORS) Configuration
    |--------------------------------------------------------------------------
    |
    | Here you may configure your settings for cross-origin resource sharing
    | or "CORS". This determines what cross-origin operations may execute
    | in web browsers. You are free to adjust these settings as needed.
    |
    | To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
    |
    */

    'paths' => ['api/*'],    //許可するパスの設定

    'allowed_methods' => ['*'],    //許可するメソッドの設定

    'allowed_origins' => ['*'],    //許可するドメインの設定

    'allowed_origins_patterns' => [],    //許可するドメインのパターン

    'allowed_headers' => ['*'],    //許可するヘッダーの設定

    'exposed_headers' => false,    //レスポンスヘッダーの公開指定

    'max_age' => false,    //ブラウザのキャッシュの保管期間

    'supports_credentials' => false,    //クッキーなどの認証の許可

];

[*]とすると全て許可することになります
少し不安点あるので間違っている点あれば、ご指摘頂きたいです。

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6