Laravel 9跨域核心是正确配置内置HandleCors中间件:须置于$middleware数组中TrustProxies之后、其他中间件之前,或放入$middlewareGroups['api']顶部;config/cors.php中paths设为['api/*','sanctum/csrf-cookie'],allowed_origins禁用通配符(启用supports_credentials时必须指定域名),并验证响应头含Access-Control-Allow-Origin等字段。

Laravel 9 已内置 CORS 支持,无需额外安装扩展包,只需正确配置中间件和参数即可快速启用。关键不是装包,而是位置、顺序和配置项的匹配。
确认中间件已注册且位置正确
打开 app/Http/Kernel.php,检查以下两点:
- 全局中间件数组
$middleware中,\Illuminate\Http\Middleware\HandleCors::class必须放在\App\Http\Middleware\TrustProxies::class之后、其他中间件之前 - 若只对 API 路由启用(推荐),则确保它出现在
$middlewareGroups['api']数组中,且在SubstituteBindings等路由绑定中间件之前
发布并编辑 cors.php 配置文件
运行命令生成配置文件(即使内置也建议执行,便于自定义):
php artisan vendor:publish --tag="cors"
Laravel Cloud(cloud.laravel.com)。此技能用于处理所有 Laravel Cloud 请求,包括搜索和读取数据。只要任务涉及 Laravel Cloud,即使用此技能。
然后修改 config/cors.php,重点调整以下几项:
-
'paths' => ['api/*', 'sanctum/csrf-cookie']—— 明确指定需跨域的路径前缀 -
'allowed_origins' => ['http://localhost:3000', 'https://your-frontend.com']—— 生产环境禁用['*'],尤其开启凭据时 -
'supports_credentials' => true—— 若前端使用credentials: 'include',此项必须为true,同时allowed_origins不能是通配符 -
'allowed_headers' => ['*']或显式列出['Content-Type', 'Authorization', 'X-Requested-With']—— 避免部分浏览器对*的兼容问题
验证是否生效
执行 php artisan route:list,确认目标 API 路由(如 GET api/users)确实绑定了 cors 中间件。
用浏览器开发者工具查看响应头,应包含:
Access-Control-Allow-Origin: http://localhost:3000-
Access-Control-Allow-Credentials: true(如启用凭据) Access-Control-Allow-Methods: GET, POST, OPTIONS, ...
若仍失败,优先检查 supports_credentials 与 allowed_origins 是否冲突,这是最常见报错原因。

















