1. 理解Chrome的SameSite Cookie策略
Chrome浏览器从80版本开始对Cookie的SameSite属性做出了重大调整,这直接影响了我们日常开发中的跨域请求处理。作为一名经历过多次SameSite问题排查的老手,我想分享一些实战经验。
SameSite属性本质上是为了防止CSRF攻击和用户追踪而设计的。它定义了Cookie在跨站请求中的发送规则,主要分为三种模式:
- Strict:最严格模式,完全禁止第三方Cookie
- Lax:默认模式,允许部分安全跨站请求携带Cookie
- None:完全开放模式,允许所有跨站请求携带Cookie
在实际项目中,最常见的坑就是iframe嵌入内容突然无法获取Cookie。比如你的主站A通过iframe嵌入了子系统B的页面,升级Chrome后发现B系统始终无法保持登录状态。这是因为Chrome 80+默认将未明确声明SameSite属性的Cookie视为Lax模式,而iframe请求在这种模式下不会携带Cookie。
2. 诊断SameSite相关问题
遇到跨域Cookie问题时,我通常会按照以下步骤排查:
首先打开Chrome开发者工具,切换到Application > Cookies面板,检查目标Cookie的SameSite属性。如果显示为"Lax"或空白(默认视为Lax),就需要特别注意了。
然后观察Network面板中的请求,重点关注:
- 请求是否跨域(检查Origin和Referer头)
- 响应中是否包含预期的Set-Cookie头
- Cookie是否确实随请求发送
一个典型的错误场景是:你的API接口返回了Set-Cookie,但后续的跨域请求却没有带上这个Cookie。这时候就需要考虑SameSite的问题了。


4万+

被折叠的 条评论
为什么被折叠?



