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這個方式了。
分享至
成為作者繼續創作的動力吧!
小弟是一位軟體工程師,樂於幫助他人,撰寫技術文章除了幫助自己複習以外,也希望可以幫助到他人,若文章內容有誤,還請大大不吝給予指教!
從 Google News 追蹤更多 vocus 的最新精選內容從 Google News 追蹤更多 vocus 的最新精選內容

發表回應

成為會員 後即可發表留言