1、 什么是cookie?
cookie一般保存在请求头中以一个单独的cookies字段保存
2、 cookie的作用
首先必须明确一点,存储cookie是浏览器提供的功能。cookie 其实是存储在浏览器中的纯文本,浏览器的安装目录下会专门有一个 cookie 文件夹来存放各个域下设置的cookie。
当网页要发http请求时,浏览器会先检查是否有相应的cookie,有则自动添加在request header中的cookie字段中。这些是浏览器自动帮我们做的,而且每一次http请求浏览器都会自动帮我们做。这个特点很重要,因为这关系到“什么样的数据适合存储在cookie中”。
存储在cookie中的数据,每次都会被浏览器自动放在http请求中,如果这些数据并不是每个请求都需要发给服务端的数据,浏览器这设置自动处理无疑增加了网络开销;但如果这些数据是每个请求都需要发给服务端的数据(比如身份认证信息),浏览器这设置自动处理就大大免去了重复添加操作。所以对于那设置“每次请求都要携带的信息(最典型的就是身份认证信息)”就特别适合放在cookie中,其他类型的数据就不适合了。
但在 localStorage 出现之前,cookie被滥用当做了存储工具。什么数据都放在cookie中,即使这些数据只在页面中使用而不需要随请求传送到服务端。当然cookie标准还是做了一些限制的:每个域名下的cookie 的大小最大为4KB,每个域名下的cookie数量最多为20个(但很多浏览器厂商在具体实现时支持大于20个)。
3、 cookie的工作过程
在cookie中保存的内容为了安全经常需要进行加密,因为这些涉及用户的一些个人信息以及服务器的一些秘钥规则,这些数据是在登录时产生的,会一直保存,每次访问登录后页面,浏览器都会将cookie中信息发送至后台进行用户身份校验,只有校验通过才能返回正确数据,否则重定向至那些不需要进行身份校验的页面,比如登录首页。再比如某些网站下载资源需要进行身份校验,只有vip才能下载,那么在post请求时,如果没有正确的cookie数据,就会返回拒绝反馈。