17
13

More than 3 years have passed since last update.

barryvdh/laravel-corsをv1.0.0以上にアップグレードする時の注意点

Last updated at Posted at 2020-01-02

はじめに

あけましておめでとうございます。新年はいかがお過ごしですか。年末年始は、Netflixのナルコスをずっと見てました。自分は個人プロダクトで使用しているLaravelのミドルウェアをバージョンアップしていました。さっさと終わらせてシーズン3に戻りたかったのですが、 barryvdh/laravel-cors を v1.0.3にアップグレードしようとしたところ、地味にハマってしまい、ナルコスに戻れなくなってしまいました。

困ったこと

barryvdh/laravel-cors を v.1.0.0以上にアップグレードしようとしたところ以下のエラーが突然表示された。

    Illuminate\Contracts\Container\BindingResolutionException: Target class [Barryvdh\Cors\HandleCors] does not exist.

注意点

1.リポジトリが移動した

2019年12月28日にリポジトリの場所が、 barryvdh/laravel-cors から fruitcake/laravel-cors に移動しました。偶然このツイートを見て知ったけど、GitHubのリリースノートやREADMEにも書いておいてほしかったですね...。

2.v1.0.0から Breaking changesの変更が入った

これは v1.0.0のRelease Note に詳細が書いてあります。この後解決方法でも具体的に紹介していきます。

環境

  • Laravel 6.9.0
  • barryvdh/laravel-cors 0.11.4

ゴール

barryvdh/laravel-cors 0.11.4 から fruitcake/laravel-cors1.0.3 にアップグレードします

解決方法

まずは composer.json でパッケージ名を変更して、 composer upgrade barryvdh/laravel-cors

- "barryvdh/laravel-cors": "^0.11.1",
+ "fruitcake/laravel-cors": "^1.0.3",

次に config/cors.php のオプション名を lowerCamelCase形式からsnake_case形式に変更します。

-    'supportsCredentials' => true,
-    'allowedOrigins' => ['*'],
-    'allowedOriginsPatterns' => [],
-    'allowedHeaders' => ['*'],
-    'allowedMethods' => ['*'],
-    'exposedHeaders' => [],
-    'maxAge' => 0,
+    'supports_credentials' => true,
+    'allowed_origins' => ['*'],
+    'allowed_origins_patterns' => [],
+    'allowed_headers' => ['*'],
+    'allowed_methods' => ['*'],
+    'exposed_headers' => [],
+    'max_age' => 0,

config/cors.phpv1.0.0 から追加になった paths オプションを追加する。 paths でCORSを許可するルーティングが指定できるので、適宜調整してください。

+     'paths' => [*], 

app/Http/Kernel.php$middleware で読み込むクラスを差し替えます。

-        \Barryvdh\Cors\HandleCors::class,
+        \Fruitcake\Cors\HandleCors::class,

これで以上です。

まとめ

リポジトリが移動されたことが分かっていれば大した内容ではないです。ですが、自分は最初そのことに気づかず、地味に少しハマってしまったので、同じようにハマる人が少しでも減ればと思い、本記事をまとめました。お役に立てれば幸いです。

17
13
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
17
13