前端用代理解决CORS问题,为什么本地开发能行上线就挂了?

设计师皓阳 阅读 15

我在本地开发时用 Vite 的 proxy 配置成功绕过了 CORS,请求第三方 API 没问题。但部署到线上后,直接报跨域错误,明明线上也配了 Nginx 反向代理,怎么就不生效了?

本地配置是这样的:

server: {
  proxy: {
    '/api': {
      target: 'https://third-party-api.com',
      changeOrigin: true,
      rewrite: (path) => path.replace(/^/api/, '')
    }
  }
}

线上 Nginx 也加了 proxy_pass,但浏览器还是报 has been blocked by CORS policy,是不是漏了什么头?

我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
司马雨萱
本地 proxy 是在开发服务器上跑的,上线后根本没这层,你 Nginx 只代理了请求,但没加 Access-Control-Allow-Origin 头,浏览器照样拦。

直接在 Nginx 里加这三行:

location /api/ {
proxy_pass https://third-party-api.com/;
proxy_set_header Host third-party-api.com;
add_header Access-Control-Allow-Origin * always;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS' always;
add_header Access-Control-Allow-Headers '*' always;
}


注意 proxy_pass 路径末尾加 / 才会重写路径,不然路径会带 /api/
点赞 1
2026-02-26 19:29