LoginSignup
1
0

More than 3 years have passed since last update.

Laravel6のAPIをデバッグ時にAccess-Control-Allow-Originでハマった

Posted at

cors対策はfruitcake/laravel-cors

composer require fruitcake/laravel-cors

既にパッケージはインストール済みで、設定もしてあること前提。
普通にAPIを叩くだけなら、正常に動く。

で、APIの修正やら新規作成する時にデバッグしたい箇所をdump & exitしようとする。
あれ。。。デベロッパーツールのコンソールに見たことあるエラーが表示される。。。

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Access-Control-Allow-Originがhearder情報に無い

ここでしばらくハマった。。。
なんで他のAPIは普通に動くのに、デバッグしてるAPIや新規作成途中のAPIだけがCORSのエラーを履くのか。。。
hearder情報を確認するとAccess-Control-Allow-Originが確かにhearder情報に無い。。。

どうやら、
APIの処理→fruitcake/laravel-cors→responceらしく、途中で処理を止めちゃってたのが原因だった。

でも、どうしてもdump & exitでデバッグしたい!と色々やってみた。

bootstrap/app.php

今回の案件では、bootstrapを使える様にしていたので、bootstrap配下のapp.phpの頭に以下コードを埋め込んでみた。

header('Access-Control-Allow-Origin: *');

ちゃんとデベロッパーツールのNetwork>Previewで見れた!!!

最後に

bootstrap/app.phpに追加したコードは忘れずに削除する。
削除を忘れると、headerにAccess-Control-Allow-Originが2つ存在するので、それはそれでエラーになる。

あんまり利用する場面は少ないと思いますが、CORSのエラーでハマってる方はお試しください。
でも、CORS対策でbootstrap/app.phpにheader('Access-Control-Allow-Origin: *');を書くのは厳禁です!(当たり前ですが。。。)
ちょっとしたデバッグ時に、config.phpとかを修正しなくてもdumpさせるチョイ技でした。

1
0
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
1
0