首先我们知道,Cookie 是我们访问过的网站创建的文件,用于存储浏览信息,例如您的网站偏好设置或个人资料信息。
共有两种类型的 Cookie:第一方 Cookie 是由地址栏中列出的网站域设置的 Cookie,而第三方 Cookie 来自在网页上嵌入广告或图片等项的其他域来源。
第一方Cookie和第三方Cookie,都是网站在客户端上存放的一小块数据。他们都由某个域存放,只能被这个域访问。他们的区别其实并不是技术上的区别,而是使用方式上的区别。
比如,访问A这个网站,这个网站设置了一个Cookie,这个Cookie也只能被A这个域下的网页读取,这就是第一方Cookie。 如果还是访问A这个网站,网页里有用到B网站(和A网站的域名是不同的)的一张图片,浏览器在B请求图片的时候,B设置了一个Cookie,那这个Cookie只能被B这个域访问,反而不能被A这个域访问,因为对我们来说,我们实际是在访问A网站时,被设置了一个B这个域下的Cookie,所以叫第三方Cookie。 (你我他;你:A网站,我:浏览器,他:B网站;‘他’ 就是第三方,所以B网站下的cookie是第三方cookie。)
Cookie中的同源只关注域名,忽略协议和端口。所以
https://localhost:8080/ 和 http://localhost:8081/的Cookie是共享的。
第三方Cookie的接受率不如第一方Cookie(不过主流的浏览器默认的设置下也接受带P3P协议的第三方Cookie,个人认为接受率甚至95%以上),但在某些特定情况下可以实现第一方Cookie无法实现的功能。
比如,当我们有多个域名的网站需要跟踪,我们希望了解到用户点击某个广告到达域名A下的网页,然后可能浏览了不论那个域名下的页面,最后在域名B下的网页完成注册的情况。 广告可以在域名A下的网页被跟踪到,而注册 可以在域名B下的网页跟踪到。 如果我们使用第一方Cookie,会为域名A建立一个Cookie,为域名B再建立一个Cookie,他们可以关联各自域名 下网页上的行为,但是无法关联起来。 而使用第三方Cookie,那么无论多少个域,都只有一个Cookie,一个属于第三方域的Cookie,网站下所有域都能共享这个Cookie,那么所有的行为都能被关联起来分析。