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させるチョイ技でした。