Laravel 11 已移除 fruitcake/laravel-cors,改用内置 HandleCors 中间件和 config/cors.php 配置;需手动创建配置文件并将其加入 api 中间件组。

在 Laravel 11 中,fruitcake/laravel-cors 已被官方移除,不再默认集成或推荐使用。Laravel 11 原生采用更轻量、更现代的方式处理 CORS —— 通过内置的 Cors 中间件(位于 Illuminate\Http\Middleware\HandleCors),并配合配置文件 config/cors.php 进行控制。
发布 cors.php 配置文件
虽然 Laravel 11 不再自动创建 config/cors.php,但你可以手动发布它:
- 运行命令:
php artisan vendor:publish --tag=cors - 该命令会生成
config/cors.php(如果包未安装则会失败) - 若提示 “No publishable resources for tag [cors]”,说明项目中尚未安装
fruitcake/laravel-cors—— 但注意:Laravel 11 官方不鼓励再安装它
推荐做法:直接使用 Laravel 11 内置方案
无需第三方包,只需两步:
- 执行
php artisan stub:publish(可选,确保基础配置模板就绪) - 手动创建
config/cors.php,内容参考官方结构(见下)
手动创建 config/cors.php 示例
在 config/cors.php 中写入标准配置:
return [
'paths' => ['api/*', 'sanctum/csrf-cookie'],
'allowed_methods' => ['*'],
'allowed_origins' => ['http://localhost:3000', 'https://your-app.com'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 3600,
'supports_credentials' => true,
];
⚠️ 注意:supports_credentials => true 时,allowed_origins 必须是具体域名列表,不可为 ['*']。
启用中间件
打开 app/Http/Kernel.php,确保 API 路由组已启用内置 CORS:
- 在
$middlewareGroups['api']数组中加入:\Illuminate\Http\Middleware\HandleCors::class - 不要加到全局
$middleware,避免影响 Web 页面(如登录页、Blade 渲染)











