前端用代理解决CORS问题,为什么本地开发可以线上却不行?

设计师清梅 阅读 25

我在本地开发时用 Vite 的 proxy 配置成功绕过了 CORS,接口能正常调用。但部署到线上后,请求还是被浏览器拦了,报错 CORS header 'Access-Control-Allow-Origin' missing。是不是代理只在 dev server 生效?线上环境该怎么处理?

我的 Vite 配置是这样的:

export default defineConfig({
  server: {
    proxy: {
      '/api': {
        target: 'https://external-service.com',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^/api/, '')
      }
    }
  }
})

现在上线后直接请求 /api/xxx,结果发现根本没走代理,而是直接发到我自己的域名下了……这咋办?

我来解答 赞 12 收藏
二维码
手机扫码查看
1 条解答
UX-爱静
UX-爱静 Lv1
是的,代理只在本地dev server生效。线上要么让后端在接口响应里加 Access-Control-Allow-Origin 头,要么用Nginx配个反向代理把 /api 转发到 external-service.com,没别的办法。

Nginx配置大概这样:
location /api/ {
proxy_pass https://external-service.com/;
proxy_set_header Host external-service.com;
proxy_set_header X-Real-IP $remote_addr;
}
点赞
2026-03-16 15:32