通过http-proxy-middleware零响应

时间:2018-09-11 07:31:39

标签: javascript express http-proxy http-proxy-middleware

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

即使设置很简单:

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

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

3 个答案:

答案 0 :(得分:0)

Heureka!我找到了想要的答案!冒犯的一方是express.urlencoded()中间件(在我的情况下),该中间件确实有些技巧,最终弄乱了代理。这可以通过在代理之后应用有问题的中间件来解决。可能执行此操作的其他中间件包括cookie-parserbodyParser(均已弃用)。

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

答案 1 :(得分:0)

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

就像这样:

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

答案 2 :(得分: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