为什么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
相关产品推荐
相关产品推荐

