发送后快速重定向 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
上的任何方法 redirect
、render
、json
等都不会停止请求处理程序的执行,它会一直执行到结尾。你可以在那里有任何代码,它会工作,但你不能将响应发送给客户端两次,这就是你收到此错误的原因。
要解决它,您需要使用 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');
}
我正在使用快递:
// 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
上的任何方法 redirect
、render
、json
等都不会停止请求处理程序的执行,它会一直执行到结尾。你可以在那里有任何代码,它会工作,但你不能将响应发送给客户端两次,这就是你收到此错误的原因。
要解决它,您需要使用 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');
}