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

Vite代理POST请求失效,仍指向localhost:5173问题求助

解决Vite代理POST请求未转发到目标端口的问题

1. 检查POST请求路径是否带/api前缀

你的代理规则仅匹配/api开头的路径,所有需要转发的POST请求必须以/api开头:

  • 错误示例:fetch('/user', { method: 'POST' }) —— 直接请求localhost:5173/user
  • 正确示例:fetch('/api/user', { method: 'POST' }) —— 会被代理到http://127.0.0.1:9000/user

2. 确认HTTP请求库的baseURL配置(如axios)

如果使用axios这类工具,需将baseURL设为/api,确保所有请求自动带上前缀:

import axios from 'axios'
const api = axios.create({
  baseURL: '/api'
})

// 此POST请求会自动拼接/api前缀,触发代理
api.post('/user', formData)

3. 排查代理规则冲突或插件干扰

检查vite.config.js中是否有其他优先级更高的代理规则,或者安装的插件(如legacy插件)是否影响了请求转发逻辑。确保/api的代理规则是最先定义的,避免被其他规则覆盖。

4. 强制重启Vite开发服务

修改vite.config.js后,部分情况下开发服务不会自动加载新配置。完全关闭当前服务,重新执行npm run dev,确保代理配置生效。

5. 处理特殊Content-Type的POST请求

如果POST请求的Content-Type是multipart/form-data等特殊类型,需在代理配置中添加自定义处理:

proxy: {
  "/api": {
    target: "http://127.0.0.1:9000/",
    changeOrigin: true,
    rewrite: (path) => path.replace(/^\/api/, ""),
    configure: (proxy) => {
      proxy.on('proxyReq', (proxyReq) => {
        // 确保请求头正确传递
        if (!proxyReq.getHeader('Content-Type')) {
          proxyReq.setHeader('Content-Type', 'application/json')
        }
      })
    }
  },
},

6. 清除浏览器缓存或禁用Service Worker

浏览器缓存的旧请求路径、本地Service Worker可能会拦截请求。打开开发者工具的Network面板,勾选「Disable cache」,刷新页面后重新测试POST请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:25:17