Inv*_*der 7 security cookies google-chrome localhost samesite
我有一个需要从另一个站点进行身份验证才能登录的网站。两者是不同的域。
我默认启用了来自 chrome://flags 的相同站点的 cookie 标志。只是为了在我的网站上检查 chrome 的新更新效果如何。
它在我部署的站点中运行良好。但是当我尝试在我的本地主机中运行它时,我无法登录。我丢失了第三方 cookie。
如果有人解释原因,那就太好了。
Ada*_*eis 13
不幸的是,所有 cookie 都SameSite=None必须有一个Secure参数。由于您不太可能在开发服务器上运行 HTTPS,这意味着您的 cookie 将不起作用,因为 cookie 不是通过 HTTPS 发送的。
我目前知道的唯一解决方法是检查您的环境,并SameSite=Lax为您的开发环境和SameSite=None; Secure生产环境设置 cookie。
在 Express 中,您可以使用该secure参数来检查您是否在 HTTPS 上运行,然后按如下方式设置 cookie:
const {secure} = req;
res.cookie('key', 'contents', {
secure,
httpOnly: true,
sameSite: secure ? 'None' : 'Lax',
});
Run Code Online (Sandbox Code Playgroud)
小智 2
正如您所知,对于跨站点 cookie,我们必须指定属性 SameSite=None 和 Secure。假设您的本地主机上没有 SSL 证书,它停止工作的原因是只有通过 HTTPS 发送的 cookie 可以使用安全属性。
| 归档时间: |
|
| 查看次数: |
4840 次 |
| 最近记录: |