如何使用NodeJS Express将新创建的cookie发送到浏览器

时间:2015-12-22 13:15:15

标签: javascript node.js express cookies es6-promise

概述:

用户已登录,因此在浏览器中为该用户设置了所需的身份验证Cookie。

我有一个端点,可以为不同的用户生成新的身份验证cookie。我想将这些新cookie发送到浏览器,以便我以这个新用户身份登录。

问题:

我的终端正确生成新Cookie。但我不确定如何将这些新cookie发送到浏览器,以便我以新用户身份登录。

代码:

此代码段调用端点,该端点为给定用户生成新的Cookie。

当控制台记录response.headers cookie时,我可以看到我想发送给浏览器的新cookie。

app.get(['my-api-path'], (req, res) => {
  res.send({userId: req.params.userId, modifiedBy: req.params.modifiedBy});
  axios({url: my-endpoint,
    method: req.method,
    type: 'json',
    headers: { my-headers },
  })
  .then((response) => {
    let setcookie = response.headers["set-cookie"];
    let host = req.headers.host;
    console.log(setcookie);
  })
  .catch((response) => {
    // TO DO add error checks here 
  });
});

2 个答案:

答案 0 :(得分:0)

您也可以在发送回复之前使用res.cookie。

app.get(['my-api-path'], (req, res) => {
  axios({url: my-endpoint,
    method: req.method,
    type: 'json',
    headers: { my-headers },
  })
  .then((response) => {
     res.cookie("cookieName","cookieValue",{maxAge:3600});
     res.send({userId: req.params.userId, modifiedBy: req.params.modifiedBy});
  })
  .catch((response) => {
    // TO DO add error checks here 
  });
});

res.cookie()需要在res.send()

之前

http://expressjs.com/en/api.html#res.cookie了解更多信息

答案 1 :(得分:0)

由于我的回复在数组中有多个cookie,因此我最好使用

res.set('Set-Cookie', setcookie);

所以我的最后一段代码看起来像这样:

app.get(['my-api-path'], (req, res) => {
  axios({url: my-endpoint,
    method: req.method,
    type: 'json',
    headers: { my-headers },
  })
  .then((response) => {
    const setcookie = response.headers['set-cookie'];
    res.set('Set-Cookie', setcookie);
    res.send({ userId: req.params.userId, modifiedBy: req.params.modifiedBy});
    next();
  })
  .catch((response) => {
    // TO DO add error checks here 
  });
});