通过http-proxy-middleware实现零响应

问题描述 投票:1回答:3

我正在尝试使用http-proxy-middleware在Express中调试代理,但无论我做什么,我都得到绝对零响应。端点发送响应但代理从不返回响应,并且永远不会触发onProxyRes事件。此外,端点可以通过curl,Insomnia,fetch API和request-promise直接访问,并且正在作为我们客户的API使用。

即使设置简单如下:

app.use('/api', proxy({
  target: 'https://my.secret.endpoint',
  changeOrigin: true
});

除了在超时后的ECONNRESET,我得到绝对零响应。有什么建议?

javascript express http-proxy http-proxy-middleware
3个回答
1
投票

Heureka!我找到了我要找的答案!违规方是(在我的情况下)express.urlencoded()中间件,它做了一些诡计,最终搞砸了代理。这可以通过在代理之后应用违规中间件来解决。其他可能做到这一点的中间件包括cookie-parserand bodyParser(两者都被弃用)。

关于这个问题的更多信息:https://github.com/chimurai/http-proxy-middleware/issues/40


0
投票

ViggoV 当目标为https时,您需要禁用SSL。

像这样:

app.use('/api', proxy({
  target: 'https://my.secret.endpoint',
  changeOrigin: true,
  secure: false
});

0
投票

另一个解决方案是任何人来到这里同样的问题,但没有解决它。

在代理配置中,确保您使用双**不匹配任何路径*

const proxy = require("http-proxy-middleware");
module.exports = function(app) {
  app.use(proxy("/api/**", { // https://github.com/chimurai/http-proxy-middleware
    target: "http://localhost:5000",
    secure: false
  }));
};

有关更多信息,请查看此reference

© www.soinside.com 2019 - 2024. All rights reserved.