blog icon indicating copy to clipboard operation
blog copied to clipboard

Chrome 80 默认禁用第三方cookie(SameSite=Lax)

Open diamont1001 opened this issue 4 years ago • 0 comments

Chrome 51 开始,浏览器的 Cookie 新增加了一个 SameSite 属性,用来防止 CSRF 攻击和用户追踪。

Chrome 80 默认禁用第三方 Cookie,也就是说,会默认会给第三方 Cookie 添加 SameSite=Lax 属性,也就是说,A 域名跨域请求 B 域名的时候,Cookie 不会带过去,这会导致以下几种情况

  • jsonp 请求跨域,无法通过携带 Cookie
  • CORS 请求,原有开启 withCredentials 无法携带 Cookie
  • iframe 嵌入场景,内嵌页面无法发送 Cookie

Chrome 中打开 chrome://flags/#same-site-by-default-cookieschrome://flags/#cookies-without-same-site-must-be-secure 两个 Flag,就能提前试验屏蔽第三方 Cookie 的效果

解决

Chrome 计划将Lax变为默认设置。这时,网站可以选择显式关闭SameSite属性,将其设为None。不过,前提是必须同时设置Secure属性(Cookie 只能通过 HTTPS 协议发送),否则无效。

下面的设置无效:

Set-Cookie: widget_session=abc123; SameSite=None
下面的设置有效。
Set-Cookie: widget_session=abc123; SameSite=None; Secure

diamont1001 avatar Feb 04 '20 02:02 diamont1001