node.js - 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 有关,但这似乎并没有解决它,而且页面上说它不会影响同站点请求,我的总是这样。
解决方案
不确定您在哪里托管您的服务器,但在遇到类似问题后您可以使用以下行,这可能是您的服务器托管在诸如 heroku 之类的地方,根据这个其他堆栈溢出线程PassportJS 回调在 http 和 https 之间切换
app.set('trust proxy', 1)
推荐阅读
- c# - CodeVerification Cookie 在 Edge 和 Chrome 中消失
- google-analytics - 使用 Measurement Protocol 发送的事件未设置活跃用户
- java - 如何使无法识别的字符转义“。” (代码 46)被识别 - com.fasterxml.jackson.core.JsonParseException
- echarts - 多系列不同粒度的echarts
- python - python中的函数问题(TypeError:touch_detect()采用0个位置参数,但给出了1个)
- elasticsearch - 如何在具有相同字段的文档中查找时间戳之间的时间差?
- android - ML Kit 检测到您似乎将相机帧作为位图对象传递给检测器。这是低效的
- java - 文本字段阿拉伯语输出显示奇怪的字符 javaFX
- python - 如何在 Python 中对范围进行子类化?
- c# - 如何在代码中使用调度程序约会