javascript - 为什么 express-session(SameSite 属性)在 Chrome 上不起作用?
问题描述
我正在使用 Express.js 和 React.js 开发一个 Web 应用程序。我正在使用快速会话,但它不起作用。这就是我使用它的方式:
app.use(session({
store: new MongoStore({
mongooseConnection: mongoose.connection,
ttl: 365 * 24 * 60 * 60
}),
secret: process.env.SESSION_SECRET,
resave: true,
saveUninitialized: false,
cookie: {
maxAge: 24 * 60 * 60 * 1000,
httpOnly: true,
secure: false,
SameSite: 'strict',
}
}));
我尝试在真、假、自动和所有可能的组合中使用“安全”。并且总是有同样的 Chrome 问题:
在未来版本的浏览器中,标有 SameSite=None 的 cookie 也必须标有 Secure 以允许在跨站点上下文中设置它们。此行为可防止用户数据通过不安全的连接发送。通过更新 cookie 的属性来解决此问题:如果要在跨站点上下文中设置 cookie,请指定 SameSite=None 和 Secure。请注意,只有通过 HTTPS 发送的 cookie 才能使用 Secure 属性。如果跨站点请求不应设置 cookie,请指定 SameSite=Strict 或 SameSite=Lax
有谁知道如何解决它?
非常感谢。
解决方案
SameSite: 'strict'
是问题!第一个 'S' 在 JavaScript 中应该是小写的sameSite: 'strict'
。
此外,如果这不能解决您的问题,它是否可能实际上不是同一个站点请求,您需要将其修改为sameSite: none
. 我可能是错的,除了你分享的,我什么都不知道,只是想把它扔掉以防万一!
推荐阅读
- c# - 无法使用 System.Management 获取 azure vm 机器的已安装软件详细信息
- android - Android资源链接失败(未找到任何解决方案)
- sql - 在gridview中生成下拉字段,其中选项作为另一列中具有相同ID的列中的值
- c# - 使用 c# 将受密码保护的 Zip 文件转换为 Enc 文件
- azure - 使用 Azure SQLDW Polybase 使用 vnet 服务终结点从 ADLS Gen 1 引入数据
- c# - 在过滤器属性中使用 Autofac 进行属性/方法注入
- pentaho-spoon - 在 pentaho PDI V7 中未选中表输出中的“指定数据库字段”时,“列名无效”
- android - 在 Kotlin 中使 Android Lifecycle Observer 接收器不可为空
- php - PHP - 使用 dns_get_record() 验证 NS / DNS 服务器 Ip
- r - RSelenium 和网页抓取