Cookie缓存机制

Cookie存在的意义:

  • 个人感觉是为了方便用户,当一个用户再去访问之前访问过的网站时,由于有Cookie的存在就不需要再次输入信息(比如某网站需要登录输入用户名和密码,第二次登录时就不不需要再次输入)。由于HTTP协议是无状态的,但是服务器端的业务必须是有状态的,Cookie就是用来存储Web中的状态信息,来方便服务器端的使用。

无状态解释:用户请求时,浏览器和服务器是不知道该用户做了什么。因为浏览器和服务器通信是通过socket套接字进行的,当服务器将请求结果返回给浏览器和处理完页面之后,会关闭socket连接并且销毁页面对象。但是有时候需要保存用户的状态,比如说记录用户是否登陆过,浏览过哪些信息等等。)

Cookie实现的机制

  • (1)当用户通过浏览器客户端第一次访问某网站时,服务端会组织一个Cookie信息,在响应报文里带上该Cookie信息(在响应报文头部加入:Set_Cookie : name = value),并且把该信息存储到本服务器上(Session)。
  • (2)浏览器客户端收到HTTP响应报文后会检查Set_Cookie字段,将其信息保存到浏览器。当用户再次使用该浏览器客户端访问该网站时,会带着之前保存的Cookie信息(在HTTP请求头部加入Cookie : name = value)。
  • (3)服务端会根据Cookie信息与本服务器上存储的Session进行匹配,以此来判断该浏览器客户端之前是否访问过(Cookie存储在浏览器,Session存储在服务器端)

Cookie的组成:
Cookie的内容主要包括:

  • 名字-name(必需)
  • 值-value(必需)
  • 过期时间-expire(可选)
  • 路径-path(可选)
  • 域名-domain(可选)
  • 安全标志-secure(可选):规定是否使用安全的HTTPS协议连接来传输Cookie

Cookie是否相同是由名字和路径共同决定的:

  • 名字相同,不设置路径的话算是相同的Cookie,后面的覆盖前面的
  • 名字相同,设置了不同的路径,算是不同的Cookie
  • Cookie默认的路径为当前请求URL的路径

例如:

Set-Cookie: name=”Amin”;expires:Mon, 21-07-2020 00:00:00 GTM;domain=”tencent.com”;path=/;secure

上面Cookie的名称为name,它的值为”Amin”,到2020年7月21的凌晨过期,对于tencent.com和www.tencent.com及其子域都有效,并且该cookie是安全的,意思是只能通过SSL连接(如HTTPS)来发送,仅仅用HTTP协议是不能发送的。

  • 路径和域一起构成了Cookie的作用范围。
  • 过期时间如果为零时表示删除同名的Cookie数据。
  • 过期时间如果不设置或者为负整数的话,那么该Cookie的生命周期随浏览器会话,浏览器会话关闭,Cookie消失,这种Cookie叫作会话Cookie,会话Cookie存储在内存中。
  • 如果设置了过期时间(正整数),那么该Cookie会存储在硬盘上,关闭浏览器再次打开时这些Cookie依旧有效,直到设定的过期时间为止。存储在硬盘上的Cookie可以在不同浏览器进程间共享。

Cookie只能保存非中文字符串数据类型,浏览器一般只允许存放300个Cookie,每个Cookie的大小限制为4KB(4096Byte),每个站点(域名)存放Cookie的数量也是有限制的。

  • IE6及以下的浏览器每个域名最多包含20个Cookie;
  • IE7及以上的浏览器每个域名最多50个Cookie;
  • Firefox每个域名最多50个Cookie;
  • Sarafi和Chrome对每个域的Cookie数目没有严格限制。

删除Cookie的方式:

  • 通过浏览器直接删除Cookie
  • 将Cookie中的时间设置为已经过去的时间
  • 给Cookie赋空值

本人也是学习总结,如有错误之处,欢迎指正,不胜感激!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值