为什么在快速会话中将 cookie.secure 设置为 True 允许会话 ID 和数据保留?

Why setting the cookie.secure to True in express session allows session id and data to persist?

我目前正在学习 MERN 堆栈并从事一个小项目,该项目要求我拥有一些可以在路由之间保留的会话数据。

它按预期工作,但每当我走错路线或返回登录页面并记录会话 ID console.log(req.session.id) 每次都不一样。

所以我做了一些挖掘,从以前的一些 Whosebug 帖子,session not persisting when using secure cookie in NodeJS with express-session,在 http 上测试时设置 cookie: { secure: false } 似乎解决了我的问题。会话 ID 和扩展会话数据仍然存在。

我想知道为什么在 express session 选项中设置 cookie: { secure: false } 允许 session id 和数据持续存在,而没有它则不能。

这是我的会话选项

server.use(session({
        secret: 'sxexsxsxixoxn',
        resave: false,
        saveUninitialized: true,
        cookie: { secure: false }
    }))

如果您设置 cookie: {secure: true},cookie 将仅通过 https 连接设置,而不是通过 http 连接设置。另见 here

所以如果你只有一个http服务器,你必须设置cookie: {secure: false},否则将不会设置任何cookies并且会话处理将无法工作。