我正在使用 http-proxy-middleware ( https://github.com/chimurai/http-proxy-middleware#http-proxy-events ) 来实现一个简单的代理 (调用它my-proxy/
) 到另一个 REST API (调用它/rest-api
)这要求用户在 HTTP 标头中传递身份验证令牌auth-token
。可以使用POST /rest-api/auth
正文中的凭据从端点获取令牌。
我希望我的代理接受传入的请求并检查是否auth-token
在请求标头中设置,如果没有执行 aPOST /rest-api/auth
以检索令牌并auth-token
在将请求传递给rest-api/
.
在我指定的代理配置中
onProxyReq: function (proxyReq, req, res) {
if (!req.header("auth-token")) {
const authRequest = request({
url: 'rest-api/auth',
method: 'POST',
json: {"username": "user", "password": "pass"}
},
function (error, resp, body) {
proxyReq.setHeader("auth-token", body.token)
}
);
}
}
我可以看到body.token
返回正确的令牌。但是,setHeader
调用失败并显示Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
.
我认为这意味着我修改的请求在等待回调之前已经发送到rest-api/
,但我不知道在我的场景中如何最好地解决这个问题。
有什么帮助吗?