從瀏覽器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這個方式了。