Express JS - 设置cookie服务器端的奇怪行为

时间:2016-07-15 16:05:46

标签: javascript node.js express cookies

我现在正撞在墙上。我不明白为什么cookie表现得如此奇怪。

我正在尝试使用sessionId cookie将响应头发送回客户端。 如果我POST /登录cookie将不会设置,但如果我使用GET / setCookie创建一个随机端点,它就可以正常工作。任何人都知道为什么会发生这种情况

This does not work
-------------------
app.post('/login', function(req, res) {
 var username = req.body.username;
 var password = req.body.password;
 var userID;
​
  db.collection('users')
    .find({username: username})
    .then((userObj) => {
      if(!userObj) {
        res.status(401).send({ error: "Invalid Username/password" })
      } else {
        console.log("b")
        userID = userObj[0]._id;
        return Utils.comparePassword(userObj[0].password, password)
      }
    })
    .then((isValidPassword) => {
      if(!isValidPassword) {
        res.status(401).send({ error: "Invalid username/Password" })
      } else {
        return db.collection('sessions')
          .insert({ id: userID, sessionId: Utils.createSessionId() })
      }
    })
    .then((userObj) => {
      console.log("cookie?")
      res.cookie('sessionId', userObj.sessionId, { path: '/' }).send("cookie set")
      // res.set({'Set-Cookie':'sessionId=' + userObj.sessionId, path: '/'})
    })
})
---------------
But this works
---------------
app.get('/setCookie', function(req, res) {
  res.cookie('testCookie', 'test', { path: '/' })
  res.end();
})
app.post('/setCookie', function(req, res) {
  res.cookie('testCookie', 'test', { path: '/' })
  res.end();
})

0 个答案:

没有答案