奇怪的是,角度应用程序无法从主页重定向。
除了我必须在根目录'/'之后手动添加一些内容。在图片中,当我开始在地址栏中键入/api/user
时。然后发生重定向。
所有XHR在访问根URL时都命中快递服务器吗?当我访问主页时?
如何将根域重定向到/ login?
我的路由器就是这样
const authUser = (req, res, next) => {
if (req.session.user && req.cookies['connect.sid']) {
User.findOne({
where: {
id: req.session.user.id
}
}).then((user) => {
if (user && user.status === 'active') {
next();
} else {
res.redirect('/login');
}
}).catch(
() => res.status(500).send("Something wrong!")
);
} else {
res.redirect('/login');
}
};
app.get('/login', (req, res, ) => {
res.sendFile(__dirname + '/views/login.html');
});
app.all('*', authUser, function (req, res, next) {
next();
});
答案 0 :(得分:0)
尝试以下方法,可以解决
app.get('/*', function(req, res) {
res.sendFile(path.join(__dirname, '../public/index.html'));
});
但是您不能从服务器重定向。如果使用.es或.jade,则可以重定向。
现在,您必须从角部分重定向
this.router.navigate(['/']);
or
this.router.navigate(['/login']);
答案 1 :(得分:0)
经过几天的思考,因为我不认为浏览器或角度应用程序的设计是一种不互相听见的怪异方式-通过这种方式,我的意思是同意HTTP状态代码进行适当的重定向。
我之所以在XHR请求中发生这种奇怪的重定向,但没有正确的document
或html/plain text
类型的请求,是因为后者没有达到authentication guards
路由所有。因此发生的是,角度已成功初始化,并且客户端已经在发送XHR请求。因此,服务器错过了从适当的通道将302重定向代码发送回anguar的机会,是的,它通过XHR做到了,但是浏览器不会对此做出响应。
为什么会这样?因为在看守路线之前,我有这条线:
app.use(express.static(path.join(__dirname, 'dist')));
这是告诉express.js
提供'dist'文件夹中的静态文件。
我一直认为这只是配置,但不仅限于此。实际上,它打开了整个dist/
,并允许文件自由下载到浏览器而不会出现问题,因此完全错过了重定向的机会。
因此,将这一行移动到guarding
路线下方之后,一切正常。
现在,角度初始化已按需重定向到OK。现在,我只需要在某些情况下做重定向的角度方,例如说,检测到401访问被禁止的情况,例如重新启动服务器。