我正在实现一个路由保护(CanActivate接口),在某些情况下我需要重定向到not found页面。这可以通过下面的句子来实现:
if (isNode){
let res : Response = Zone.current.get('res');
res.status(404).redirect('/not-found');
}else{
this.router.navigate(['not-found']);
}
这是可行的,但会引发服务器端的异常(错误:发送后无法设置标头),因为无论重定向如何,angular2-universal仍会发送呈现的页面。
有没有办法正确地解决这个问题?
提前谢谢。
发布于 2017-10-10 21:39:17
实际上,有一个绕过错误的解决方案。
在server.ts的res.render方法中,添加回调函数并检查res.headersSent布尔值。
server.get('*', (req, res) => {
res.render('../public/index.html', {req, res},
(error, html) => {
if(error)
// error handle
if (!res.headersSent) {
res.send(html);
}
});
});显然,只有在res.headersSent为false时才发送html。
https://stackoverflow.com/questions/42067300
复制相似问题