在本地主机的情况下,如何克服Chrome的samesite cookie更新的影响?

时间:2020-02-05 04:30:40

标签: google-chrome security cookies localhost samesite

我有一个网站,需要从另一个站点进行身份验证才能登录。两者是不同的域。

默认情况下,我已从chrome:// flags启用了同一站点的cookie标志。只是为了查看chrome的新更新在我的网站中的效果。

它在我部署的站点中运行良好。 但是,当我尝试在本地主机上运行该命令时,我无法登录。我丢失了第三方Cookie。

如果有人解释原因,那就太好了。

2 个答案:

答案 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',
});