重定向后 - 获取Express Node.js

时间:2018-06-17 22:58:44

标签: javascript node.js

我正在尝试将Post-Redirect-Get设计模式实现到我的代码中,该代码使用Express。我所拥有的是:

var sessionVariable;

app.post('/user', function(req, res) {
    sessionVariable = req.session;

    // Sets a session variable to a token
    sessionVariable.token = req.body.token;

    // Redirect to /user
    return res.redirect('/user')
});
app.get('/user', function(req, res) {
    sessionVariable = req.session;

     if(sessionVariable.token){
        res.send('Logged in');
     } else {
        res.send('Not logged in');
     }
});

期待发生的事情是当用户向/ user提交POST请求时,它将定义sessionVarlable.token,然后再次重定向到/ user,检查是否存在令牌。

最终发生的事情是我将提交POST请求,并通过控制台记录我可以看到app.post触发,但它不会重定向。相反,它似乎停留在省略POST请求的页面上。

这是什么原因?

修改:任何res都不会在app.post下触发,例如: res.send('test')无效。

2 个答案:

答案 0 :(得分:0)

根据评论中的信息,您正在制作AJAX请求。而不是让客户端从服务器端重定向,只需在客户端进行。这是在浏览器上使用Axios的示例(您可以使用AJAX执行基本相同的操作,只是更麻烦):

axios.post('/user', { token: 'tokenhere'}).then(function(response) {
    // Status 200 means OK 
    if (response.status === 200) {
        window.location.href = 'user'
    }
})

答案 1 :(得分:0)

我已将此答案发布到其他地方:Understanding the "post/redirect/get" pattern

但这是对我有用的代码:

app.post('/data', function(req, res) {
  data = req.body;
  res.redirect('/db.html');
});