关于SameSite更改与Chrome的混淆

问题描述 投票:2回答:1

我需要一些帮助来理解我在描述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
1个回答
1
投票

如此处提到的https://web.dev/samesite-cookies-explained/

如果用户在www.web.dev上并要求从那么static.web.dev就是一个相同的站点请求。

与您的第一种情况相同:

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

因此,浏览器将您的第一个请求视为一个相同站点的请求,不会删除cookie,但是第二个请求是一个跨站点请求,并且将删除不具有相同站点属性的cookie。

© www.soinside.com 2019 - 2024. All rights reserved.