Vite代理POST请求遭301跳转转为GET问题求助
Vite代理POST请求被转为GET(301重定向)问题解决方案
问题根源
从日志和现象判断,问题出在目标服务器的路径规则:当请求https://xxx.xxx.inc/core/login(不带末尾斜杠)时,服务器返回301重定向到带斜杠的https://xxx.xxx.inc/core/login/。而浏览器遵循HTTP规范,收到301响应处理POST请求时,会自动把请求方法转为GET,最终导致你看到的异常。
修复方法
方法一:修改Vite代理的路径重写逻辑
调整rewrite函数,确保代理后的目标路径末尾带斜杠,避免触发服务器重定向:
server: { host: "0.0.0.0", proxy: { "/api": { target: "https://xxx.xxx.inc", changeOrigin: true, rewrite: (path) => { const strippedPath = path.replace(/^\/api/, ""); // 保证路径末尾带斜杠 return strippedPath.endsWith('/') ? strippedPath : `${strippedPath}/`; }, secure: false, // 可选:开启followRedirects,确保代理跟随重定向时保留POST方法 followRedirects: true }, }, },
方法二:前端请求时直接带末尾斜杠
如果不想改动代理配置,在前端发送请求时,把URL改成带末尾斜杠的形式,比如将/api/core/login改为/api/core/login/,这样代理后的目标路径就是服务器期望的格式,不会触发301重定向。
验证方式
修改后重启Vite服务,重新发送POST请求,观察日志是否不再出现vite:spa-fallback相关的GET请求记录,同时确认请求始终保持POST方法且返回正常响应。
内容的提问来源于stack exchange,提问作者velly.zhou
相关产品推荐
相关产品推荐

