<p>Laravel 5.x 需手动安装 fruitcake/laravel-cors:^0.2 版本,发布配置后将 HandleCors 中间件加入 Kernel.php 全局栈开头,并确认响应头含 Access-Control-Allow-* 字段。</p>

在 Laravel 5.x(如 5.5–5.8)中配置 CORS 并添加全局中间件,需手动集成,因为原生不带 fruitcake/laravel-cors 包(该包从 Laravel 5.5 起逐渐成为主流,但默认未内置)。以下是清晰、可落地的操作步骤:
安装并注册 CORS 包
运行命令安装兼容 Laravel 5.x 的版本:
composer require fruitcake/laravel-cors:^0.2
✅ 注意:Laravel 5.x 应使用
^0.2版本(如0.2.4),高版本(1.x+)仅支持 Laravel 7+。
发布并检查配置文件
php artisan vendor:publish --tag="cors"
执行后会在 config/cors.php 生成配置。可按需调整,例如允许所有来源(开发环境):
'supports_credentials' => true, 'allowed_origins' => ['*'], 'allowed_headers' => ['*'], 'exposed_headers' => [], 'max_age' => 3600,
将中间件加入全局中间件栈
打开 app/Http/Kernel.php,在 $middleware 数组最开头插入:
\Fruitcake\Cors\HandleCors::class,
确保它位于 TrustProxies、CheckForMaintenanceMode 等之前,以保障预检请求(OPTIONS)能被及时拦截处理。
验证是否生效
发送一个带 Origin 头的跨域请求(如 Vue 开发服务器 http://localhost:8080 调用 Laravel API),检查响应头是否包含:
-
Access-Control-Allow-Origin: *(或具体域名) -
Access-Control-Allow-Credentials: true(若启用了 credentials) -
Access-Control-Allow-Headers等
若无响应头,请确认:
- 中间件未被注释或拼写错误
-
config/cors.php已正确加载(可运行php artisan config:clear && php artisan config:cache) - 没有其他中间件(如自定义 CORS 或 Nginx 层)覆盖了响应头
这样就完成了 Laravel 5.x 的 CORS 全局中间件配置。


















