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

为什么express-http-proxy似乎忽略了路径?如何正确携带路径转发?

问题原因

当你使用app.use('/login', proxy())形式挂载代理中间件时,express会自动将匹配到的/login路径前缀从请求url中移除,代理中间件拿到的路径已经不包含/login,因此最终转发到目标地址的根路径。你直接在目标地址后拼接/login不生效,是因为未开启对应路径拼接配置。

解决方法

你可以任选以下任意一种方案修改配置:

方案1:通过pathRewrite补全路径前缀

在proxy的options配置中新增pathRewrite规则,手动给转发路径补全/login前缀:

const coreUrl = "myip:3000"
app.use('/login', proxy(coreUrl, {
  // 保留你原来的其他配置项
  changeOrigin: true,
  pathRewrite: {
    '^': '/login'
  }
}));

方案2:调整代理挂载规则

把路径匹配逻辑放到proxy的第一个参数中,express就不会自动移除匹配的路径前缀:

const coreUrl = "myip:3000"
app.use(proxy('/login', {
  target: coreUrl,
  changeOrigin: true
  // 保留你原来的其他配置项
}));

方案3:开启路径拼接配置

如果你要直接把/login写到目标地址中,需要额外开启prependPath配置:

const coreUrl = "myip:3000/login"
app.use('/login', proxy(coreUrl, {
  changeOrigin: true,
  prependPath: true
  // 保留你原来的其他配置项
}));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:18:02