我有一个网站,需要从另一个站点进行身份验证才能登录。两者是不同的域。
默认情况下,我已从chrome:// flags启用了同一站点的cookie标志。只是为了查看chrome的新更新在我的网站中的效果。
它在我部署的站点中运行良好。 但是,当我尝试在本地主机上运行该命令时,我无法登录。我丢失了第三方Cookie。
如果有人解释原因,那就太好了。
答案 0 :(得分:0)
如您所知,对于跨站点Cookie,我们必须指定属性SameSite = None and Secure。假设您的本地主机上没有SSL证书,则它停止工作的原因是只有通过HTTPS发送的cookie才能使用Secure属性。
答案 1 :(得分:0)
不幸的是,所有带有SameSite=None
的cookie也必须具有一个Secure
参数。由于您不太可能在开发服务器上运行HTTPS,因此这意味着您的cookie无法使用,因为cookie不会通过HTTPS发送。
我目前知道的唯一解决方法是检查您的环境,并为您的开发环境设置SameSite=Lax
的cookie,并为生产设置SameSite=None; Secure
的cookie。
在Express中,您可以使用secure
参数检查您是否在HTTPS上运行,然后按以下步骤设置Cookie:
const {secure} = req;
res.cookie('key', 'contents', {
secure,
httpOnly: true,
sameSite: secure ? 'None' : 'Lax',
});