Node.js 当“SelfHandlerResponse”为真时,如何传递代理响应?

Node.js 当“SelfHandlerResponse”为真时,如何传递代理响应?,node.js,express,request,node-http-proxy,http-proxy-middleware,Node.js,Express,Request,Node Http Proxy,Http Proxy Middleware,我正在运行一个开发代理服务器,在启动时,我使用我们的集群架构请求一个auth令牌 但是,此令牌在一段时间后过期。然后,我想发出另一个请求来获取另一个有效的身份验证令牌,而不是开发人员重新启动他们的代理服务器。为了能够自己处理响应,我将节点http代理选项selfHandlerResponse设置为true 现在,我只想用401来处理响应,因为这是我唯一需要请求另一个令牌的情况 const onProxyRes = (proxyRes, req, res) => { if (proxyR

我正在运行一个开发代理服务器,在启动时,我使用我们的集群架构请求一个auth令牌

但是,此令牌在一段时间后过期。然后,我想发出另一个请求来获取另一个有效的身份验证令牌,而不是开发人员重新启动他们的代理服务器。为了能够自己处理响应,我将节点http代理选项selfHandlerResponse设置为true

现在,我只想用401来处理响应,因为这是我唯一需要请求另一个令牌的情况

const onProxyRes = (proxyRes, req, res) => {
  if (proxyRes.statusCode === 401) {
    getToken()
      .then(forwardRequest(req))
      .then((response) => {
        res.send(response.body);
      })
      .catch(() => {        
        res.sendStatus(500);
      });
  }

  // How to pass back the original proxyRes including body, headers etc.?
});
编辑:forwardRequest是我的功能,用于重试原始请求,然后在成功时将其交还给客户端

我的问题从这里开始,因为我不知道如何将代理的非401请求传递回客户端。我发现自己开始实现依赖于标题内容类型的正文解析逻辑,但我非常希望有一种更简单的方法


有什么想法吗?

解决方案很简单

proxyRes.pipe(res);
可在node http proxy的源代码中找到。

您能否分享forwardRequest函数的外观?可能会让人们在同样的问题上绊倒更容易。
proxyRes.pipe(res);