乐趣区

关于javascript:chrome新版本中iframe嵌套禁止cookie跨域携带解决方案

Google 在 2020 年 2 月 4 号公布的 Chrome 80 版本默认屏蔽所有第三方 Cookie,

即默认为所有 Cookie 加上 SameSite=Lax 属性,并且回绝非 Secure 的 Cookie 设为 SameSite=Non;SameSite 的作用就是避免跨域传送 cookie,从而避免 CSRF 攻打和用户追踪,从源头屏蔽 CSRF 破绽。

Secure 属性
仅当整站应用 https 协定时:发出请求,平安 cookie 才会发送到服务器。

SameSite 属性
Cookie 的 SameSite 属性用来限度第三方 Cookie,从而缩小平安危险。
它能够设置三个值:Strict、Lax、None

Strict 最为严格,齐全禁止第三方 Cookie,跨站点时,任何状况下都不会发送 Cookie。换言之,只有以后网页的 URL 与申请指标统一,才会带上 Cookie。

Lax 规定稍稍放宽,大多数状况也是不发送第三方 Cookie,然而导航到指标网址的 Get 申请除外。
导航到指标网址的 GET 申请,只包含三种状况:链接,预加载申请,GET 表单。详见下表。

申请类型 示例 失常状况 Lax
链接 发送 Cookie 发送 Cookie
预加载 <link rel=”prerender” href=”…”/> 发送 Cookie 发送 Cookie
GET 表单 <form method=”GET” action=”…”> 发送 Cookie 发送 Cookie
POST 表单 <form method=”POST” action=”…”> 发送 Cookie 不发送 Cookie
iframe <iframe src=”…”></iframe> 发送 Cookie 不发送
AJAX $.get(“…”) 发送 Cookie 不发送
Image <img src=”…”> 发送 Cookie 不发送

内嵌 iframe 携带 cookie 解决方案

一、抉择显式敞开 SameSite 属性,将其设为 None。不过,前提是必须同时设置 Secure 属性(Cookie 只能通过 HTTPS 协定发送),否则有效。
二、浏览器设置
谷歌浏览器拜访 chrome://flags/
搜寻 Enable removing SameSite=None cookies,参数设置成 disabled

退出移动版