Node.js 当“SelfHandlerResponse”为真时,如何传递代理响应?
我正在运行一个开发代理服务器,在启动时,我使用我们的集群架构请求一个auth令牌 但是,此令牌在一段时间后过期。然后,我想发出另一个请求来获取另一个有效的身份验证令牌,而不是开发人员重新启动他们的代理服务器。为了能够自己处理响应,我将节点http代理选项selfHandlerResponse设置为true 现在,我只想用401来处理响应,因为这是我唯一需要请求另一个令牌的情况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
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);