为什么我的 cookie 在页面刷新时被删除?Express-Session、Redis 和 React

lle*_*tan 5 cookies redis node.js express reactjs

我正在使用 Express-Session 来设置带有 Redis 会话存储的会话 Cookie。当用户登录时,我可以成功设置一个 cookie,通过单击 chrome 中页面 URL 旁边的“锁定”图标并查看 cookie,将其登录,如图所示。然而,当页面刷新时,我的用户会因为 cookie 消失而注销。

如何防止页面刷新时丢失 cookie?

我的会话选项减去我的路线如下所示,我在 https 上运行我的客户端。

let sessionOptions = {
  secret: "REDACTED_FROM_STACKOVERFLOW",
  resave: true,
  name: "redisSession",
  expires: new Date(Date.now() + (60 * 1000 * 60 * 100000)),
  store: new RedisStore({client: redisClient}),
  cookie: {
    sameSite: 'none',
    secure: true, 
    httpOnly: true,
    maxAge: 1000 * 60 * 1000
  },
  rolling: true,
  saveUninitialized: true
};
app.use(cors({credentials: true, origin: 'https://localhost:8080'}));
const httpsOptions = {
  key: fs.readFileSync(process.env.localHostCertKeyPath),
  cert: fs.readFileSync(process.env.localHostPemPath)
}
app.use(cookieParser("REDACTED_FROM_STACKOVERFLOW"));
const httpsOptions = {
  key: fs.readFileSync(process.env.localHostCertKeyPath),
  cert: fs.readFileSync(process.env.localHostPemPath)
}
const server = https.createServer(httpsOptions, app).listen(
  constants.LOCAL_PORT,
  constants.HOST_NAME,
  () => {
    console.log("https://" + constants.HOST_NAME + ':' + constants.LOCAL_PORT + '/');
  }
);

Run Code Online (Sandbox Code Playgroud)
  • Redis 的日志没有显示任何错误。
  • cookie 已设置。只是后来被删除了。我的登录和注销路线有效。
  • 在 Chrome 中看到的 Cookie 的过期时间是在我刷新页面后很久。
  • 如果页面未刷新,则可以使用 cookie 访问 req.session 对象和设置变量
  • 我正在使用expressexpress-sessionredisconnect-redis
  • 前端正在反应。

编辑:

请求截图

全文:

redisSession=s:YGOMoRx_wWiIiqiYOYaIfcbbKfBujg7w.92wwY6TupTwVjRs4FLbWLxxSi6bm5XW7fDwNfXInW4Q; 路径=/;过期=2021 年 3 月 7 日星期日 16:18:28 GMT;仅 Http;安全的; 相同站点=无

lle*_*tan 0

刷新页面时,cookie 消失,但我的状态检查路由实际上再次设置 cookie,但 chrome“锁定”图标 cookie 计数并未显示它存在。结果,我的客户在存储/cookies 中有 cookie,但没有渲染它已登录。我进行了一个函数调用来更新我的视觉效果,并且出于某种原因,cookie 显示在“锁定”下拉列表中。