我正在使用imap对服务器进行用户身份验证。我使用express作为服务器,使用https://github.com/mscdex/node-imap作为imap。控制器功能
exports.authenticateUser = async (req, res) => {
let username = req.body.username;
let password = req.body.password;
let imap = new Imap({
user: username,
password: password,
host: HOST_ADDRESS,
port: HOST_PORT
})
imap.once('ready', (e) => {
req.session.user = username;
return res.status(201).json({
success: true,
user: username
});
})
imap.once('error', function (err) {
console.log("err", err);
return res.status(500).json({
success: false,
error: 'Wrong credentials'
});
});
imap.connect();
}但我的服务器经常停机
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client行中出现某些错误的原因
return res.status(500).json({
success: false,
error: 'Wrong credentials'
});发布于 2020-09-10 13:15:17
要解决问题,
imap.once('ready', (e) => {
req.session.user = username;
imap.end()
return res.status(201).json({
success: true,
user: username
});
})我使用IMAP进行身份验证,因此不需要保持连接处于活动状态,因此我在验证凭据后立即结束连接。它解决了问题。
我猜可能会发生什么,在发送响应201之后,在连接终止后的一段时间内,on error被触发,导致再次发送响应,从而出现错误。只是猜测而已。
发布于 2020-09-10 13:21:19
改一下这个怎么样?
return res.status(500).json({
success: false,
error: 'Wrong credentials'
});到这个
res.status(500).send({success: false,
error: 'Wrong credentials'
});
res.status(201).send({
success: true,
user: username
});https://stackoverflow.com/questions/62482010
复制相似问题