Laravel 9内置CORS配置:为指定API路由设置跨域访问规则
Laravel 9+ 指定路由CORS跨域配置方法
Laravel 9 及以上版本已将原fruitcake/laravel-cors扩展集成至框架内核,无需手动安装第三方包即可完成跨域规则配置,针对api/list、api/profiles这类指定路由的配置步骤如下:
- 第一步:发布CORS配置文件
项目根目录下执行Artisan命令,生成框架默认的CORS配置文件:
执行完成后,php artisan vendor:publish --tag=corsconfig目录下会生成cors.php配置文件。 - 第二步:配置需要应用跨域规则的路由路径
打开config/cors.php,找到paths配置项,将需要配置跨域的路由地址填入数组即可:'paths' => [ 'api/list', 'api/profiles', // 如需匹配某类前缀的所有路由,可使用通配符,例:'api/admin/*' 匹配所有admin前缀的API路由 ], - 第三步:按需调整其他跨域参数
同文件内可根据业务需求调整其余跨域规则:allowed_origins:配置允许发起跨域请求的源地址,本地开发可临时设为['*']允许所有源,生产环境必须配置为实际的前端业务域名,例:['https://www.your-site.com']。注意:若开启supports_credentials为true,该项不能设为通配符,必须填写具体源地址allowed_methods:配置允许的跨域请求方法,例:['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS']allowed_headers:配置允许的跨域请求头,一般场景可设为['*']supports_credentials:是否允许跨域请求携带cookie、authorization等凭证,设为true时前端请求也需要同步开启withCredentials配置max_age:配置跨域预检请求的缓存时间,单位为秒
- 第四步:确认中间件开启
打开app/Http/Kernel.php,确认全局中间件组中已包含CORS处理中间件,Laravel 9+版本默认已自动添加该配置,若被手动移除请补全:protected $middleware = [ // ...其他全局中间件 \Illuminate\Http\Middleware\HandleCors::class, ];
注意:如果生产环境开启了配置缓存,修改完配置后需要执行
php artisan config:clear清除缓存,新的跨域规则才会生效。
内容的提问来源于stack exchange,提问作者terafia
相关产品推荐
相关产品推荐

