【问题标题】:My cookie must expired at the end of the session with cookie-session and node js and express我的 cookie 必须在 cookie-session 和 node js 和 express 的会话结束时过期
【发布时间】:2021-07-08 19:53:55
【问题描述】:
我的会话 cookie 有问题,使用 express 和 node js 的 cookie-session
当我关闭浏览器时,会话的 cookie 不会被删除
app.use(cookieSession({
name: 'session',
keys: ['key1', 'key2'],
secret: 'secret',
cookie: {
secure: true,
domain:"lucie-oreo.fr",
httpOnly: false,
path: '/'
expires:false //I tried with null ,0
}
}));
我不明白为什么 cookie 没有被删除
感谢帮助我:)
【问题讨论】:
标签:
javascript
node.js
express
cookies
session-cookies
【解决方案1】:
即使您重新启动浏览器,它们也可以存储 cookie。您必须发送额外的标头信息,这可以是过去的日期,以确保它在会话结束时过期或不允许缓存 cookie,这可以通过 Cache-Control: private 或 Cache-Control: no-cache="set-cookie" 指令来完成。
MDN HTTP Cookies:
- 当前会话结束时会删除会话 cookie。浏览器定义了“当前会话”何时结束,有些浏览器在重启时会使用会话恢复,这可能会导致会话 cookie 无限期地持续很长时间。
RFC 2109 第 4.2.3 节说:
如果 cookie 旨在供单个用户使用,则不应缓存 Set-cookie 标头。可能会缓存旨在由多个用户共享的 Set-cookie 标头。
源服务器应根据情况发送以下附加 HTTP/1.1 响应标头:
- 禁止缓存 Set-Cookie 标头:Cache-control: no-cache="set-cookie"。