提到Cookie 或许会想到以上Cookies
但实际上他有很多释义
Cookie作用
Cookie
就是访问者在访问网站后留下的一个信息片段。
由于,HTTP
协议是无状态的协议,如果你在同一个客户端向服务器发送多次请求,服务器不会知道这些请求来自同一客户端(同一个用户)。
那么,如果它是有状态协议,你必须要时刻与服务器建立链接,那么如果连接意外断开,整个会话就会丢失,重新连接之后一般需要从头开始;
而如果是无状态协议,使得会话与连接本身独立起来,这样即使连接断开了,会话状态也不会受到严重伤害,保持会话也不需要保持连接本身。
但是,缺点也很明显:即使同一个客户端连续两次发送请求给服务器,服务器也识别不出这是同一个客户端发送的请求,这导致的问题就比如你加了一个商品到购物车中,但因为识别不出是同一个客户端,你刷新下页面就没有了。
为了使服务器知道每个请求具体来自于哪个用户,比如你在逛淘宝的时候你只需要登录一次,当你发起一次购买请求,服务器就已经知道你登录过了,不会再让你进行登录。
由此,Cookie
诞生了,Cookie
就是一种浏览器管理状态的一个文件,让无状态的 HTTP
协议拥有一小块记忆。
Cookie
主要有以下用途:
-
会话管理
:登陆、购物车等应该记住的其他内容 -
个性化
:用户偏好、主题或者其他设置 -
追踪
:记录和分析用户行为
Cooike原理
第一次访问网站的时候,浏览器发出请求,服务器响应请求后,会将cookie
放入到响应请求中(就在http
响应报文的header
中Set-Cookie
项),在浏览器第二次发请求的时候,会把cookie
带过去(http
请求报文header
中的cookie
项),服务端会辨别用户身份,当然服务器也可以修改cookie
内容。
Cookie分类
有两种类型的 Cookies
,一种是 Session Cookies
,一种是 Persistent Cookies
,如果 Cookie
不包含到期日期,则将其视为会话 Cookie
。会话 Cookie
存储在内存中,永远不会写入磁盘,当浏览器关闭时,此后 Cookie
将永久丢失。如果 Cookie
包含有效期 ,则将其视为持久性 Cookie
。在到期指定的日期,Cookie
将从磁盘中删除。还有一种是 Cookie
的 Secure
和 HttpOnly
标记。