You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8.54配置fruitcake/laravel-cors后React请求报CORS Missing Allow Origin如何解决

Laravel 8 CORS 跨域问题排查步骤

按照优先级依次排查:

  • 第一优先清除Laravel缓存
    很多配置修改后未清空缓存会导致不生效,依次执行以下命令:
    php artisan config:clear
    php artisan route:clear
    php artisan cache:clear
    
  • 检查CORS中间件注册位置是否正确
    确认app/Http/Kernel.php中的$middleware全局中间件数组,已经将\Fruitcake\Cors\HandleCors::class放在最开头,不要放在$middlewareGroups的api分组内,否则异常提前返回时不会携带CORS响应头。
  • 检查请求路径是否匹配CORS规则
    当前配置仅对api/*和sanctum/csrf-cookie开头的路径生效,如果你请求的接口路径没有/api/前缀,不会触发CORS中间件,需要将对应路径补充到paths配置数组中。
  • 排查是否为Laravel异常提前返回导致的缺头
    Postman不会校验CORS头,所以哪怕接口报错也能正常看到响应内容,但浏览器会先校验CORS头是否存在。如果接口触发了路由不存在、权限校验失败、表单验证错误等异常,Laravel会提前返回响应,没有走到CORS中间件,就会缺Access-Control-Allow-Origin头。
    验证方法:查看storage/logs/laravel.log中对应请求的报错信息,先解决业务层面的错误,再验证CORS问题。
  • 检查axios配置和CORS配置是否匹配
    如果你在axios中开启了withCredentials: true,当前配置的supports_credentials: false以及allowed_origins: ['*']组合会直接触发CORS错误,要同时做两处修改:
    1. 将config/cors.php中的supports_credentials改为true
    2. 将allowed_origins改为你React项目的具体源,比如['http://localhost:3000'],不能使用通配符*
  • 排查上层服务的CORS配置冲突
    如果你用了Nginx、CDN、反向代理等上层服务,确认这些服务没有提前配置CORS规则,或者拦截了请求返回了不带CORS头的响应。
  • 临时验证方案
    可以在public/index.php文件最开头手动添加CORS头测试:
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: *');
    header('Access-Control-Allow-Headers: *');
    
    如果添加后问题解决,证明是Laravel的CORS中间件未正常触发,回到前面步骤排查中间件注册和配置即可。

内容的提问来源于stack exchange,提问作者snouck.socmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:06:02