【问题标题】:Read cookies which was sent from nodejs读取从 nodejs 发送的 cookie
【发布时间】:2020-10-17 18:46:47
【问题描述】:

我有一个应用程序,我从后端设置 cookie,例如:

res.cookie('Authorization', 'Bearer ' + token, {httOnly: true});

登录后,我尝试读取前端的cookie:

console.log('cookie', document.cookie)

但是这样做我在console.log() 中没有得到任何数据。
在我的示例中如何读取 cookie?

【问题讨论】:

  • httpOnly 字面意思是您无法在客户端读取 cookie(假设在实际代码中拼写正确。)
  • @Guy Incognito,你能回答这个问题吗?:我使用 cookie 将我的令牌从节点 js 发送到前端,所以当我登录时我得到了这个 cokies,但是当我想要的时候出现了一个问题在 react js 上更改页面,以这种方式在另一个页面上我没有令牌,如何在前端存储带有令牌的 cookie 并将其传递到另一个页面?
  • 如果您直接询问而不是 assumed solution,您可能会得到实际问题的答案。

标签: node.js reactjs cookies


【解决方案1】:
  • 首先,Authorization 是一个请求 http 标头,因此客户端应该是修改该标头的那个。

  • 由于您使用 cookie 来存储 jwt 令牌,因此无需使用 Authorization http 标头,因为 cookie 会与后续请求一起自动发送。

  • 您可以只发送一个包含令牌的 cookie。

    res.cookie('jwt', req.token, { httpOnly: true })
    
  • 您可以使用passport.jwt 中间件来检查jwt cookie 的存在

    const cookieExtractor = function (req: Request) {
    let token = null;
    const cookieName = config.jwt.cookieName;
    if (req && req.cookies) {
      token = req.cookies[cookieName];
    }
    return token;
    };
    

【讨论】:

  • 例如在api/login我在ui上的cookie中发送jwt。登录后,我必须在/home 页面上进行重定向,在主页上我使用节点 js 在私有路由上发出获取请求我检查我的 jwt 是否有 cookie,但是我如何从登录页面传递 cookie,之后登录,在主页?
猜你喜欢
  • 2018-04-04
  • 2018-03-05
  • 2012-01-11
  • 2017-03-06
  • 2020-04-03
  • 2015-07-13
  • 2020-03-13
  • 1970-01-01
  • 2020-11-06
相关资源
最近更新 更多