大家好,我是年年!
今天介绍的是三方cookie相关的内容,本文会讲清:
- 什么是三方cookie?
- same-site的变化是什么,对我们的业务有什么影响?
- 为什么有了same-site,还需要same-party?
文章首发在我的公众号:前端私教年年
什么是三方cookie
三方指的是非同站,这个同站和同源协议中的源origin
不同,它的要求更宽松。
同源协议中的源是由「协议+域名+端口」三者一起定义的,有一个不同就不算同源,而同站只受域名的约束,并且还不要求一模一样——只要「有效顶级域名+二级域名」相同,都算同站。
有效顶级域名是由Mozilla维护的一份表格,其中包括
.com
、.co.uk
、.github.io
等。所以ai.taobao.com和www.taobao.com是同站的,因为它们的顶级域名(.com)+二级域名(.taobao)相同。
现在知道了什么是站,就可以很简单区分了:
打开开发者工具的application,domain一列中显示和当前域名不同的就是三方cookie
如何携带三方cookie
cookie的携带是浏览器自动的操作,规则是「不认来源,只看目的」,下面会讲清这句话的意思。
cookie下发
首先,需要先了解cookie的下发,服务端会将其下发到浏览器,方法是通过响应头中的set-cookie
字段
里面还包括一些配置属性,关键的是其中的domain
domain
指定cookie未来使用时,可以被携带到哪些域名。其值可以设置为当前服务端的父级域名或其本身,比如ai.taobao.com
设置的cookie的domain可以为.taobao.com
,所设置值的所有子域名都可以使用,比如www.taobao.com
。
如果不设置,会默认为当前域名
ai.taobao.com
,并且只有自己可以使用,子域名sub.ai.taobao.com
都不能使用,适用范围就小了很多,所以一般都会设置。
但是不能设置为跨站点的.baidu.com
,也不能