发送后表达重定向标头

时间:2015-01-03 08:23:40

标签: node.js express

我正在使用快递:

// 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.

重定向后如何停止?

1 个答案:

答案 0 :(得分:0)

在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');
}