【发布时间】:2020-07-01 05:36:55
【问题描述】:
我需要一些帮助来理解我发现的描述 Chrome 的新 SameSite 限制的材料中没有描述的案例。目前,我有一个托管站点的案例,该站点向 API 发出跨站点请求。 API 使用 CORS 标头进行响应。详情如下:
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 标头会影响任何东西(基于我所看到的一切,它从未提及 SameSite 更改)但我还是将它们放在这里。鉴于这种情况,当我在以下位置设置标志时:
chrome://flags/#same-site-by-default-cookies
chrome://flags/#cookies-without-same-site-must-be-secure
我希望浏览器阻止 cookie 值的发送。这是因为我希望 cookie 被视为具有 SameSite=Lax 并且这些是跨站点请求。这不是实际发生的情况,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 标志有关。
有人能帮我理解为什么第一个场景有效而第二个无效吗?我担心它工作实际上是一个错误,它不应该。如果是这种情况,将来它可能会在没有警告的情况下从“工作”变为“失败”。
我发现的 Chrome 更改/标志的详细信息在这里:
【问题讨论】:
标签: google-chrome cors same-origin-policy cross-site samesite