Chrome 关于 SameSite 变化的困惑

Confusion regarding SameSite changes with Chrome

我需要一些帮助来理解我在 material 中找不到的案例 我找到了描述 Chrome 的新 SameSite 限制。目前,我有一个托管网站的情况,该网站向 API 发出 cross-site 请求。 API 以 CORS headers 响应。详情如下:

Site: https://a.a.com
API: https://b.a.com

--API response headers

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://a.a.com

--cookie previously set with

Set-Cookie: value=somevalue; Path=/; Expires=<some time/date>; HttpOnly 

我不希望 CORS headers 影响任何东西(基于我所看到的一切,它从未提及 SameSite 更改)但我还是将它们放在这里。鉴于这种情况,当我将标志设置为:

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

我希望浏览器阻止发送 cookie 值。这是因为我希望 cookie 被视为具有 SameSite=Lax 并且这些是 cross-site 请求。这不是实际发生的情况,cookie 已成功发送。在测试这个时,我还尝试在任何请求和 POST 请求之间等待 3 分钟,以避免 "Lax+POST" 缓解,因为我们在每个响应上设置 cookie(更新过期)。根据我阅读的有关更改的内容,我不明白为什么浏览器没有阻止发送此 cookie 以及为什么这些请求会成功。

为了让事情更加混乱,我们在开发过程中遇到了以下情况的一些案例:

Site: http://localhost
API: https://a.b.com

--API response headers

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://localhost

--cookie previously set with

Set-Cookie: value=somevalue; Path=/; Expires=<some time/date>; HttpOnly 

与描述的第一种情况不同,这些请求实际上会阻止 cookie 按预期发送(仅当启用新的 chrome 标志时)。正如我所料,浏览器给出的警告消息与 SameSite 和 Secure 标志相关。

谁能帮我理解为什么第一种情况有效而第二种情况无效?我担心的是它的工作实际上是一个错误,它不应该。如果是这种情况,将来它可能会在没有警告的情况下从 "working" 变为 "failing"。

我找到的 Chrome changes/flags 的详细信息在这里:

如此处所述https://web.dev/samesite-cookies-explained/

If the user is on www.web.dev and requests an image from static.web.dev then that is a same-site request.

与您的第一个案例相同:

Site: https://a.a.com
API: https://b.a.com

所以浏览器认为你的第一个请求是同站请求,cookies不会被移除,但是第二个是跨站请求,没有samesite属性的cookies会被移除。