http-proxy-middleware配置代理后请求路径未被转发如何解决
问题根因
路径未追加的核心原因是 createProxyMiddleware 的路径匹配规则和 Express 的 app.use 挂载逻辑不兼容:你当前将匹配路径 /post 作为 createProxyMiddleware 的第一个入参传入,触发了代理的路径截断逻辑,导致匹配到的路径没有被自动追加到目标地址末尾。
解决方案
两种修改方式都可以解决问题,任选其一即可:
- 将匹配路径移到
app.use的第一个参数,createProxyMiddleware仅传入配置对象:
const { createProxyMiddleware } = require('http-proxy-middleware'); module.exports = function (app) { app.use( "/post", createProxyMiddleware({ target: 'https://postman-echo.com', changeOrigin: true, logLevel: 'debug' }) ); };
- 保持原有写法,显式声明
prependPath: true配置项(部分版本的代理库该参数默认值存在异常,显式声明可以规避问题):
const { createProxyMiddleware } = require('http-proxy-middleware'); module.exports = function (app) { app.use( createProxyMiddleware("/post", { target: 'https://postman-echo.com', changeOrigin: true, logLevel: 'debug', prependPath: true }) ); };
修改完成后重启 React 开发服务,代理日志会正常输出预期的路径转发记录,POST 请求也会和 CURL 命令执行结果一致返回正确响应。
内容的提问来源于stack exchange,提问作者Jack N.
相关产品推荐
相关产品推荐

