Vite代理服务器不转发POST请求问题求助
解决Vite代理仅支持GET/HEAD请求的问题
问题原因
你配置的rewriteHost不是Vite代理的有效选项,导致代理规则未正确生效,POST等非GET/HEAD请求没有被代理处理,转而触发了Vite的html-fallback机制(该机制仅处理GET/HEAD请求),因此出现日志提示:
vite:html-fallback Not rewriting POST /test because the method is not GET or HEAD. +1ms
修复后的配置
将代理配置中的错误选项替换为Vite官方支持的参数,确保所有请求方法都能被代理:
import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' export default defineConfig({ plugins: [react()], server: { proxy: { '/test': { target: 'http://jsonplaceholder.typicode.com', changeOrigin: true, // 关键:跨域代理时需设置,修改请求头的Host为目标服务器地址 // 若需要将请求路径中的/test前缀移除,可添加以下rewrite规则(根据实际需求选择) // rewrite: (path) => path.replace(/^\/test/, '') } } } })
关键说明
changeOrigin: true:当代理到不同域名的服务器时,必须设置该选项,否则目标服务器可能因跨域策略拒绝请求。- 若你的实际目标是
https://google.com/test,只需将target值修改为https://google.com即可。 - 修改配置后重启Vite服务,再执行
curl -X POST localhost:3000/test就能看到请求被正确代理到目标地址。
内容的提问来源于stack exchange,提问作者Marcus Dunn
相关产品推荐
相关产品推荐

