laravel 7需手动配置fruitcake/laravel-cors v2.x:安装包、在config/app.php注册corsserviceprovider、发布并配置cors.php(注意allowed_origins与supports_credentials配合)、将handlecors加入$middlewaregroups['api'],确保options预检通过。

Laravel 7 默认不内置 CORS 支持,也不像 Laravel 8+ 那样默认集成 fruitcake/laravel-cors 的自动注册逻辑,因此需手动安装和配置该包。以下是针对 Laravel 7 的完整、可靠配置步骤:
1. 安装 laravel-cors 包
在项目根目录执行:
composer require fruitcake/laravel-cors "^2.0"
注意:Laravel 7 兼容的是 fruitcake/laravel-cors v2.x(v3+ 要求 Laravel 8+),不可安装最新版。
2. 注册服务提供者(Laravel 7 必须手动)
打开 config/app.php,在 'providers' 数组中添加:
Fruitcake\Cors\CorsServiceProvider::class,
⚠️ 不要跳过这步——Laravel 7 不支持自动发现,不注册则配置不生效。
3. 发布并编辑配置文件
运行命令生成配置:
php artisan vendor:publish --provider="Fruitcake\Cors\CorsServiceProvider"
然后修改 config/cors.php:
-
'paths' => ['api/*']—— 指定启用 CORS 的路由前缀(如用 Sanctum,可加'sanctum/csrf-cookie') -
'allowed_origins' => ['http://localhost:3000', 'https://your-vue-app.com']—— *禁止直接写 `['']`(尤其开启 credentials 时)** -
'supports_credentials' => true—— 若前端需传 Cookie 或 Token(如 axios.withCredentials = true),必须设为true,同时allowed_origins不能为* -
'allowed_headers' => ['*']或明确列出:['Content-Type', 'X-Requested-With', 'Authorization']
4. 将中间件加入全局或 API 中间件组
打开 app/Http/Kernel.php:
- 若希望所有 API 路由生效,将中间件加入
$middlewareGroups['api']:\Fruitcake\Cors\HandleCors::class,
- 若需全局生效(含非 API 路由),可加入
$middleware数组顶部(慎用,可能影响后台等非跨域场景)
5. 验证预检请求(OPTIONS)是否被正确处理
确保你的 API 路由支持 OPTIONS 方法(Laravel 自动响应,无需额外定义)。
若使用自定义控制器方法且遇到 405 Method Not Allowed,检查是否遗漏了 Route::options(...) 或未启用 HandleCors 中间件。
完成以上步骤后,重启开发服务器(如 php artisan serve),前端发起请求即可正常通过跨域校验。











