会话cookie集`SameSite=None;安全;`不起作用



我添加了SameSite=None;保护设置cookie。但是cookie没有设置,我无法登录我的网站。

response.writeHead(200, {
'Content-Type': 'application/json',
'Set-Cookie': 'token=' + token + '; SameSite=None; Secure; Expires=' + time.toUTCString() + '; Path=/' + '; Domain=' + hostname,
'csrf-token': csrfToken
});

我在Application>存储>Cookie,查看更多详细信息。它显示了一条警告信息:

此设置cookie被阻止,因为它不是通过安全连接发送的

chrome blockes cookie,因为我在开发环境中工作,我发送http请求。但是这个测试在Firefox浏览器上正确登录
我在cookie中放入了secure一词,它正常工作,但因为security这个词必须在samesite=none旁边使用,否则cookie将被阻止
我的问题是,为什么当我使用secure时,只有Chrome浏览器会阻止cookie,而在其他浏览器中也是如此。如果我不使用secure,我就无法测试支付网关,因为如果我没有使用secure,它会阻止Chrome交叉源。。。

我的问题是为什么当我使用安全时,只有Chrome浏览器阻止cookie,但在其他浏览器中也是如此

我不确定其他浏览器,但Chrome根据IETF草案实施了允许具有secure属性的cookie通过安全连接的策略。

虽然这个草案是为Chrome实现的,但它不在Firefox上,这就是为什么在Firefox上你会转到about:config > network.cookie.sameSite.noneRequiresSecure,默认值是false

如果你只需要为你的本地开发环境做这件事,你可以通过禁用来保留chrome中cookie的旧行为

  1. chrome://flags/#same-网站默认cookie
  2. chrome://flags/#cookies-没有相同的站点必须是安全的

我必须支持遗留的http客户端,但如果我使用https://origin安全,我无法从http设置cookie,更糟的是,我无法访问此来自http的cookie,我的目标是让SameSite=None,在http和在http://origin上不安全,没有任何想法,而不是建立谷歌办公室附近的抗议活动?

考虑到它在不久的将来将成为标准,我怀疑您是否能够为客户端应用程序实现这种行为,唯一的途径是安全HTTPS。

参考:

  1. https://web.dev/samesite-cookies-explained/#changes-到没有samesite的默认行为
  2. https://redmondmag.com/articles/2020/01/28/samesite-cookie-changes-break-apps.aspx

有些cookie无法按预期工作,因为有些cookie滥用了sameSite属性。CookieSomeCookie被拒绝,原因是它具有sameSite=none属性,但缺少secure属性。因此,任何请求SameSite=None的cookie都必须标记为Secure

Set-Cookie: product=pen; SameSite=None

要修复此问题,必须将Secure属性添加到SameSite=NoneCookie中。

Set-Cookie: flavor=choco; SameSite=None; Secure

安全cookie只会通过HTTPS协议通过加密请求发送到服务器。

注意:不安全的站点(http:)无法使用Secure指令设置cookie。

最新更新