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

Laravel 8与Angular跨域名部署偶发CORS错误如何解决?

可行解决方案

核心问题根因

你当前出现偶发CORS报错的核心原因是自定义CORS中间件逻辑缺陷,且禁用了Laravel 8官方自带的跨域处理组件,具体问题有两个:

  1. 自定义中间件先执行后续业务逻辑再添加CORS头,遇到OPTIONS预检请求、业务抛出异常/错误码时,CORS头不会被添加到响应中,直接触发跨域拦截
  2. 简单GET/POST请求不需要预检可正常返回,带自定义头的非简单请求需要预检就失败,所以表现为"有时正常有时报错"

具体操作步骤

  1. 移除自定义CORS中间件
  • 删除app/Http/Middleware/CORS.php文件
  • 打开app/Http/Kernel.php,从全局中间件数组中删掉\App\Http\Middleware\CORS::class这一行
  1. 启用官方跨域处理组件
  • 取消app/Http/Kernel.php全局中间件里\Fruitcake\Cors\HandleCors::class的注释,并且将它调整到全局中间件的第一行,确保所有请求(包括预检、异常响应)都会先经过CORS处理,调整后全局中间件示例如下:
protected $middleware = [
    \Fruitcake\Cors\HandleCors::class, // 放到最顶部
    // \App\Http\Middleware\TrustHosts::class,
    \App\Http\Middleware\TrustProxies::class,
    \App\Http\Middleware\PreventRequestsDuringMaintenance::class,
    \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
    \App\Http\Middleware\TrimStrings::class,
    \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
  1. 配置验证
    你当前的config/cors.php配置已经符合要求,无需额外修改;如果后续需要在跨域请求中携带认证Cookie,再将supports_credentials改为true,同时前端请求开启withCredentials即可。

  2. 清除缓存生效
    执行以下命令清除Laravel配置、路由缓存,避免旧配置残留:

php artisan config:clear
php artisan route:clear

内容的提问来源于stack exchange,提问作者user3653474

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:15:03