发送后快速重定向 headers

express redirect headers after they are sent

我正在使用快递:

// check user session
var user = req.user;
if(!user)
    res.redirect('/login');

res.render('report/search');

我收到这个错误:

Error: Can't set headers after they are sent.

重定向后如何停止?

在 expressjs 中,responose 上的任何方法 redirectrenderjson 等都不会停止请求处理程序的执行,它会一直执行到结尾。你可以在那里有任何代码,它会工作,但你不能将响应发送给客户端两次,这就是你收到此错误的原因。

要解决它,您需要使用 return if-else 子句:

var user = req.user;
if(!user)
    return res.redirect('/login');

return res.render('report/search'); //this return is not required, but it's still good to have it there

或者:

var user = req.user;
if(!user) {
    res.redirect('/login');
}
else {
    res.render('report/search');
}