Cookie分类:First-Party-Cookie和Third-Party-Cookie
cookie域名和当前地址栏的域名不一致时就是 三方 cookie
如何区分不同site
SameSite 中的site包含.com/.cn和服务(例如your-project/my-project)
- www.web.dev和static.web.dev 是同一个site
- your-project.github.io和my-project.github.io是不同的site,因为服务名不一致
Set-Cookie: promo_shown=1;SameSite=Strict/Lax/None;Secure
举例说明siteA和siteB
1:Strict:
情况一,A站嵌入了一张B图片/脚本,A请求时不会携带B站的Cookie
情况二,A站内有关于B站的链接,打开B链接后“不会”携带B站的Cookie
2:Lax:
情况一,和strict一样
情况二,A站内有关于B站的链接,打开B链接后“会”携带B站的Cookie
3:None:
任何情况都会发送cookie
4:不设置SameSite默认值是Lax
5:如果设置SameSite=None那么Cookie必须是Secure的,只能https传送
实用场景:
如果其他站点消费你的服务,比如:远程组件、可嵌入内容、紧密耦合的程序(SDK)、广告、跨域登录
注意:
Chrome从80开始启用SameSite
Firefox和Edge也计划启用
有些旧版浏览器不支持None属性,可用正则判断useragenthttps://www.chromium.org/updates/same-site/incompatible-clients
测试:
Chrome76以上版本:chrome://flags/#cookies-without-same-site-must-be-secure
Firefox 69打开about:config设置network.cookie.sameSite.noneRequiresSecure
关于公共后缀的理解: http://www.kokojia.com/article/9678.html