4

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

即使设置如此简单:

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

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

4

3 回答 3

6

赫里卡!我找到了我正在寻找的答案!违规方是(在我的情况下)express.urlencoded()中间件,它做了一些诡计,最终搞砸了代理。这可以通过在代理之后应用有问题的中间件来解决。其他可能执行此操作的中间件包括cookie-parserbodyParser(均已弃用)。

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

于 2018-09-11T12:49:21.647 回答
1

对于遇到相同问题但未解决的任何人的另一种解决方案。

在代理配置中,确保您匹配任何带有双 ** 的路径,不仅 *

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
  }));
};

有关更多信息,请查看此参考

于 2019-04-07T16:09:55.387 回答
0

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

像这样:

app.use('/api', proxy({
  target: 'https://my.secret.endpoint',
  changeOrigin: true,
  secure: false
});
于 2018-09-28T09:30:45.643 回答