首页 > 解决方案 > Express Session cookie 未保存在 Chrome 中?

问题描述

我设置了一个快速会话以使用存储在数据库中的 cookie。这在 Firefox 中完美运行,但它似乎永远不会保存 cookie,因此客户端永远不会反映会话。

app.use(expressSession({ 
  secret: data[0],
  cookie: { 
    httpOnly: false,
    secure: true,
    maxAge: 14 * 24 * 60 * 60 * 1000, //14 days
  },
  store: new connectMongo({mongooseConnection: mongoose.connection}),
  resave: false,
  saveUninitialized: false,
}));

在 Firefox 中,它肯定将 cookie 保存为 connect.sid,并在页面加载之间保存数据: 在此处输入图像描述

在 chrome 中,它保存了我的一些浏览器端设置的 cookie,例如分析和我用 javascript 做的,但 connect.sid 从未保存。

在此处输入图像描述

编辑:所以我发现它与secure: true,但如果我不需要,我不想禁用它。

我认为它与xhr.withCredentials 有关,但这似乎并没有解决它,而且页面上说它不会影响同站点请求,我的总是这样。

标签: node.jsexpresssessioncookiesexpress-session

解决方案


不确定您在哪里托管您的服务器,但在遇到类似问题后您可以使用以下行,这可能是您的服务器托管在诸如 heroku 之类的地方,根据这个其他堆栈溢出线程PassportJS 回调在 http 和 https 之间切换

app.set('trust proxy', 1)

推荐阅读