laravel 5.5需手动配置barryvdh/laravel-cors:注册serviceprovider、发布并检查config/cors.php、设置paths/allowed_origins/supports_credentials/allowed_headers、将handlecors中间件置$middleware开头,否则出现cors错误。

Laravel 5(特指 5.5 及更早版本)没有内置 CORS 支持,也不能用 fruitcake/laravel-cors——它要求 Laravel 6+,在 5.5 上安装后完全不生效,vendor:publish 无反应,config/cors.php 根本不会生成。必须使用 barryvdh/laravel-cors,并严格按手动流程配置,漏一步就会出现 “No 'Access-Control-Allow-Origin' header” 错误。
安装与服务提供者注册
运行命令安装兼容包:
composer require barryvdh/laravel-cors
打开 config/app.php,在 'providers' => [] 数组末尾添加:
Barryvdh\Cors\ServiceProvider::class
⚠️ 这步不可省略:Laravel 5.5 不支持自动发现,不手动注册,中间件根本不会加载。
发布并检查配置文件
执行命令生成配置:
php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider"
确认 config/cors.php 已生成。若未生成,说明服务提供者注册失败或命令执行有误。
运行缓存清理确保配置生效:
php artisan config:clear && php artisan config:cache
关键配置项设置(config/cors.php)
重点修改以下几项,避免常见拦截:
-
'paths':设为['api/*', 'sanctum/csrf-cookie'],覆盖常用 API 路由 -
'allowed_origins':明确列出前端地址,如['http://localhost:3000', 'https://your-app.com'];禁用['*'](尤其当启用凭据时) -
'supports_credentials':如需携带 Cookie 或 Token,设为true;此时allowed_origins必须是具体域名,不能用* -
'allowed_headers':建议设为['*']或显式列出['Content-Type', 'X-Requested-With', 'Authorization']
中间件顺序与启用
打开 app/Http/Kernel.php,将 CORS 中间件置于全局中间件数组最上方:
- 在
$middleware = [ ... ]开头插入:\Barryvdh\Cors\HandleCors::class - 务必放在
\App\Http\Middleware\Authenticate::class等认证中间件之前,否则带凭证的预检请求会被提前拦截
验证是否生效:用浏览器开发者工具打开 Network 面板,发起一个跨域请求,查看响应头中是否包含 Access-Control-Allow-Origin 等字段。











