2021-03-12|閱讀時間 ‧ 約 3 分鐘

Laravel 設定 CORS

從瀏覽器console看到類似這個error: ..... has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource
表示遇到CORS的問題,在Laravel中有現成的套件(fruitcake/laravel-cors)可以直接用,但我個人是遇到不work的問題,config/cors.php中不管怎麼設定都不會跑middleware的code,後來改成直接改bootstrap/app.php,在最下面return前加入:
header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: *'); header('Access-Control-Allow-Headers: *');
再自行根據需求把*改掉,這個方法經測試OK!
可以改成類似這種寫法,解決Access-Control-Allow-Origin需設定多個domain的問題:
注意: app/Http/Kernel.php中的protected $middleware = [...]; 裡面如果有用到\Fruitcake\Cors\HandleCors::class 記得要註解或刪掉,不然會導致上述改bootstrap/app.php的方法也失效!

2023/12/16 補充:
Laravel 9.2以後就直接內建fruitcake/laravel-cors此套件了,所以可以直接使用config/cors.php這個檔案來設定CORS,預設如下圖:
例如把allowed_origins改成http://localhost:3000,這是我前端開發的url:
因此不再需要用bootstrap/app.php這個方式了。
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.