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

2023-12-25

我添加了 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
});

我在开发者工具中的“应用程序”>“存储”>“Cookies”下查看了 cookie,并查看了更多详细信息。它显示了一条警告消息:

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

chrome阻止cookie,因为我在开发环境上工作并且我发送http请求。但本次测试在Firefox浏览器上登录正确。
我把这个词secure在cookie里面并且它工作正常,但是因为这个词secure必须在旁边使用同一站点 = 无 for 跨域,否则cookie将被阻止。
我的问题是为什么当我使用secure,只有Chrome浏览器会屏蔽cookie,但在其他浏览器中也是如此。 如果我不使用secure我无法测试支付网关,因为如果我不使用安全,它会阻止 Chrome 跨源...


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

我不确定其他浏览器的情况,但 Chrome 实施了允许 cookie 的策略secure安全连接属性按照此IETF草案 https://datatracker.ietf.org/doc/html/draft-west-cookie-incrementalism-00#section-3.2.

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

如果您只需要为本地开发环境执行此操作,您可以通过以下方式在 chrome 中保留 cookie 的旧行为:禁用

  1. chrome://flags/#same-site-by-default-cookies
  2. chrome://flags/#cookies-without-same-site-must-be-secure

我必须支持旧版 http 客户端,但如果我使用 https:// origin secure ,我无法从 http 设置 cookie,而且我无法访问它 来自http的cookie,我的目标是让SameSite=None,在http上安全并且 在 http:// 来源上不安全,任何想法,而不是建立 谷歌办公室附近发生抗议活动?

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

参考:

  1. https://web.dev/samesite-cookies-explained/#changes-to-the-default-behavior-without-samesite https://web.dev/samesite-cookies-explained/#changes-to-the-default-behavior-without-samesite
  2. https://redmondmag.com/articles/2020/01/28/samesite-cookie-changes-break-apps.aspx https://redmondmag.com/articles/2020/01/28/samesite-cookie-changes-break-apps.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

会话 cookie 设置 `SameSite=None;安全;`不起作用 的相关文章