我们在浏览网站时,尤其是一些国外网站的时候,经常会出现这样的弹框,提醒你接受全部Cookie;如果不接受,有些弹框甚至会一直出现,不让你访问;那么这个弹框为什么要出现呢?如果你接受了,对你后续浏览网站会有啥影响呢?你的隐私是否会泄露呢?带着这么多的疑惑本文就带你一探究竟。
Cookie
首先我们要知道什么是Cookie?相信对于很多Web开发的同学,尤其是前端小伙伴来说,Cookie并不陌生;很多开发同学刚上手做项目的时候,就使用过很多第三方的库对Cookie进行过存储操作;根据MDN上对Cookie的解释:
HTTP Cookie是服务器发送到用户浏览器并保存在本地的一小块数据。浏览器会存储 cookie 并在下次向同一服务器再发起请求时携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。
其实说到底,Cookie就是网站在我们浏览器中存储的一小块字符串数据而已,一般总的大小也就限制在几MB以内;它刚开始只是让网站能够确认访问的用户身份,因为我们都知道Http请求是无状态的,并不能确认是哪个请求是哪个用户发起的;但在请求上带了Cookie之后,就能够确认用户身份。
Cookie主要以键值对的形式进行存储,如name=jack,我们打开面板查看淘宝网的Cookie:
我们会看到很多的Name和Value,这里有不同的字段我们看下它们所代表的含义:
- Name:Cookie的名称。
- Value:Cookie的值。
- Domain:可以访问该Cookie的域名。
- Path:Cookie的访问路径。
- Expires:失效时间。
- Size:Cookie大小。
- Secure:标记为Secure的Cookie只通过HTTPS请求发送给服务端。
- SameSite:允许服务器设定Cookie不随着跨站请求一起发送。
- Priority:优先级。
这里字段比较多,例如Expires、Path等,一般都是在开发中才会用到的,这里就不过多介绍了;我们着重来介绍下Domain字段
,因为本文后面的内容主要都是围绕着这个字段所展开的。
这里假设我网站的域名是example.com
,我给Domain设置的是.example.com
,那么我所有example.com子域名下面的网站都是能共享Cookie的,比如a.example.com
和b.example.com
,这种一般用于很多个项目单点登陆,避免用户在类似的网站上重复登陆。
一个不太典型的案例就是淘宝网和天猫网,虽然他们俩是两个域名,但是都属于阿里旗下,