#javascript #node.js #rest #asynchronous #promise
#javascript #node.js #rest #асинхронный #обещание
Вопрос:
Я получаю:
(узел: 38891) Предупреждение о необработанном отказе: Ошибка [ERR_HTTP_HEADERS_SENT]: не удается установить заголовки после их отправки клиенту по ClientRequest.setHeader (_http_outgoing.js:485:11)
Не уверен, почему это происходит, когда setHeader
функция вызывается внутри инструкции conditinal.
cons y = proxy({
target: BackendEndPoint,
onProxyReq(proxyReq, req, res) {
logger.info('initial frontend request headers: ' JSON.stringify(req.headers))
proxyReq.setHeader('CLIENT-ID', 'project')
secretManager.awsSecretManger('frontend.encryptor').then(secret => {
if (req.hostname == 'localhost') {
logger.info("setting claims AJ")
proxyReq.setHeader('X-CLAIMS', enc.encrypt(secret.key, JSON.stringify({
aid: "TestAid",
sessionId: "TestUUID",
roles: ["a1", "a2", "a3",
"a4", "a5", "a6", "a7"],
userName: "TestUSer"
})))
return
} else if (req.claims) {
logger.info("setting claims found")
var proxyHeader = enc.encrypt(secret.key, req.claims)
return proxyReq.setHeader('X-CLAIMS', proxyHeader)
}
})
},
changeOrigin: (Origin === 'true')
}
)
Вызов функции:
app.use('/api', authHeader, y)
Комментарии:
1. Каков контекст для этой функции? Как это называется?
2. вот как я это назвал
app.use('/api', authHeader, y)
3. Я не вижу здесь ничего, что указывало бы на то, что вы отправляете тело перед заголовком. Таким образом, это, по крайней мере, предполагает, что .. возможно
y
, это нормально, но есть что-то еще, что отправляет тело до того, как заголовки могут быть отправлены.4. имеет ли значение, что
secretManager.awsSecretManger
это асинхронная функция?