You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vite代理未重定向至其他端口问题求助

搞定Vite代理:把前端3000端口的/api请求转发到后端5000端口

嘿,我帮你梳理下这个代理失效的问题,主要是两个关键地方出了错,咱们一步步来修正:

首先得明确:Vite不支持在package.json里配置proxy字段,那个是Create React App的专属配置,你写的"proxy": "http://localhost:5000"完全不会起作用,直接删掉就行。

然后核心问题在你的vite.config.js里——rewrite规则写错了!你现在写的是替换/app开头的路径,但你的请求是/api,这完全不匹配,代理自然不会生效。

修正后的vite.config.js配置

我给你调整好正确的配置,你可以直接用:

export default defineConfig({
  plugins: [react()],
  server: {
    port: 3000,
    proxy: {
      '/api': {
        target: 'http://localhost:5000/',
        changeOrigin: true,
        secure: false,
        ws: true,
        // 这里要根据你的后端接口情况调整:
        // 如果后端接口是http://localhost:5000/api,就删掉这行rewrite
        // 如果后端接口是http://localhost:5000(没有/api前缀),就保留这行,把/api前缀去掉
        rewrite: (path) => path.replace(/^\/api/, '')
      }
    }
  }
})

关于rewrite的小说明:

举个例子:

  • 如果后端的接口地址是http://localhost:5000/api(和前端请求的路径前缀一致),那你不需要rewrite,直接删掉这一项就行,Vite会自动把http://localhost:3000/api转发到http://localhost:5000/api。
  • 如果后端的接口地址是http://localhost:5000(比如直接请求http://localhost:5000就能拿到数据),那rewrite会把前端请求里的/api前缀去掉,让请求变成http://localhost:5000。

最后一步:重启Vite!

修改完配置后,一定要关掉当前的Vite开发服务器,重新运行npm run dev,配置才会生效。

之后再测试你的请求:

const res = await fetch("/api");
console.log(res);

如果代理成功,控制台里的url应该显示http://localhost:5000/api(或者你rewrite后的地址),而不是停留在3000端口啦。

额外要检查的点:

  • 确认你的后端服务确实在5000端口跑着,而且直接访问http://localhost:5000/api能正常返回数据。
  • secure: false主要是给HTTPS的后端服务用的(忽略证书验证),如果你的后端是HTTP服务,这个配置留着也没关系,不影响。

内容的提问来源于stack exchange,提问作者chocolate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 16:50:16