【问题标题】:My cookies don't persist after i restart the browser重新启动浏览器后,我的 cookie 不存在
【发布时间】:2019-05-31 04:12:36
【问题描述】:

我正在使用cookieSession 处理会话事务。没问题,除非我重新启动浏览器,我的会话不会持续。我希望会话每次都保持活跃并且永不过期。

这是我的设置

app.use(cookieSession({
  name: 'xxxx',
  keys: ['xxxxx', 'xxxx'],
  cookie: { secure: true,
            httpOnly: true,
            domain: 'mydomain.com',

            expires: 9999999999999999999999999999999999999999 
          }
  })
); 

有什么建议吗?

【问题讨论】:

    标签: node.js express cookies cookie-session


    【解决方案1】:

    查看cookie-session readme,我认为您不需要将选项嵌套在cookie 属性中。此外,expires 采用 Date 对象;如果您希望在 cookie 过期之前给它一个毫秒数,您应该将该值作为 maxAge 传递。请记住,所有 cookie 都会根据 cookie specification 过期,因此您能做的最好的事情就是将过期时间设置在很远的将来。

    试试这个:

    app.use(cookieSession({
      name: 'xxxx',
      keys: ['xxxxx', 'xxxx'],
      secure: true,
      httpOnly: true,
      domain: 'mydomain.com',
      maxAge: 9999999999999999999999999999999999999999 
      })
    ); 
    

    编辑:一些较旧的浏览器不支持maxAge,因此expires 的兼容性可能更好。另外,请注意maxAge 中的溢出;负值可能会导致浏览器立即或在浏览器关闭时使 cookie 过期。考虑使用Number.MAX_SAFE_INTEGER

    【讨论】:

    • 感谢您的帮助。但是仍然是同样的问题。当我重新启动浏览器时,所有 cookie 都会被删除。很奇怪。
    • 您确定从服务器发回 cookie 吗?
    • 解决了!谢谢。事实上,这个问题与Date 有关。 9999999999999999999 是一个无效的日期,我错误地将另一个时间戳设置为 expires,它需要一个 Date 对象。在我设置new Date(Date.now() + 86400 * 1000 * 1000) 之后,现在我的问题已解决。谢谢道格!
    猜你喜欢
    • 2017-02-02
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 2018-10-25
    • 1970-01-01
    • 2015-04-11
    相关资源
    最近更新 更多