前端用代理解决CORS问题,为什么本地开发可以线上却不行?
我在本地开发时用 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,结果发现根本没走代理,而是直接发到我自己的域名下了……这咋办?
Access-Control-Allow-Origin头,要么用Nginx配个反向代理把/api转发到external-service.com,没别的办法。Nginx配置大概这样: