#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の中身をみてみる
<?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
の各設定項目について少し触れておきます
<?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, //クッキーなどの認証の許可
];
[*]
とすると全て許可することになります
少し不安点あるので間違っている点あれば、ご指摘頂きたいです。