Laravel 10部署至虚拟主机后出现CORS跨域问题求助
Laravel 10 部署后CORS跨域问题解决步骤
本地环境正常但部署后出现CORS错误,核心原因是后端未返回正确的跨域响应头,按以下步骤排查修复:
检查Laravel CORS配置文件
打开项目根目录下的config/cors.php:- 确认
paths数组包含你的API路由前缀(比如'api/*'),确保所有需要跨域的接口都被覆盖 - 将
allowed_origins设置为前端部署域名['https://easylearning-seven.vercel.app'],测试阶段可临时用['*'](生产环境不推荐) allowed_methods和allowed_headers建议设为['*'],或根据实际请求方法/需求精准配置
- 确认
确认全局中间件加载
打开app/Http/Kernel.php,检查middleware数组中是否包含\Illuminate\Http\Middleware\HandleCors::class,若没有则添加,确保CORS中间件全局生效清除配置缓存
部署完成后,在虚拟主机终端执行以下命令,避免旧配置缓存导致修改不生效:php artisan config:clear php artisan cache:clear虚拟主机额外配置(Laravel配置无效时)
若上述配置后问题仍存在,可能是虚拟主机的Web服务器(Apache/Nginx)拦截了响应头,需手动添加:- Apache环境:在项目根目录的
.htaccess中添加以下内容Header set Access-Control-Allow-Origin "https://easylearning-seven.vercel.app" Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS" Header set Access-Control-Allow-Headers "Content-Type, Authorization" - Nginx环境:在站点配置的
server块中添加add_header Access-Control-Allow-Origin "https://easylearning-seven.vercel.app"; add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"; add_header Access-Control-Allow-Headers "Content-Type, Authorization"; if ($request_method = OPTIONS) { return 204; }
- Apache环境:在项目根目录的
验证修复效果
重新部署后端后,打开前端网站,用浏览器开发者工具的「网络」面板查看请求的响应头,确认Access-Control-Allow-Origin已正确返回且值为你的前端域名
内容的提问来源于stack exchange,提问作者muhammed raouf
相关产品推荐
相关产品推荐

