【发布时间】:2017-01-24 00:51:52
【问题描述】:
我是 Node JS 的新手。我将它与快递和护照一起使用。我还通过数据库跟踪当前用户。
目标是让他们无法访问其他数据。如果他们尝试访问其他数据,他们将被重定向到正确的数据页面,并收到来自 connect-flash 的消息提示。
代码如下:
app.get('/data/:dataPlace', isLoggedIn, function(req, res) {
if (req.user.dataPlace == req.params.dataPlace) {
res.render('data.ejs', {
user : req.user,
message: req.flash('dataDisplayMessage')
});
}
else {
req.flash('dataDisplayMessage', 'OOOPS!');
res.redirect('/data/' + req.user.dataPlace);
}
});
这在大多数情况下都有效(即使使用 chrome 预取数据):
GET /data/asdasd 302 1.049 ms - 86
GET /data/user 200 1.129 ms - 1639
然而,在极少数情况下我会得到这样的东西:
GET /data/asdasd 302 1.108 ms - 86
GET /data/asdasd 302 1.989 ms - 86
GET /data/user 200 2.769 ms - 1646
第一个 GET 请求是 chrome 预取数据引起的。除了它不像上次那样立即重定向到“用户”,而是挂起直到我按下回车键,然后导致另一个 GET 请求“asdasd”,然后它重定向到“用户”。
【问题讨论】:
-
它在其他浏览器中是否这样做?也许这是一个铬问题?我知道我在使用 Chrome 的预取时遇到了问题 - 并不是真正的问题,但是在您开发时,意外请求可能会在尝试查找问题时造成混乱。
-
@Kryten 我一直在用 safari 尝试它,但似乎无法重现相同的结果......如果没有解决方法,那将是非常可悲的
标签: javascript node.js http redirect