Cookie和Session的区别
- 1. Cookie
- 1.1 认识Cookie
- 1.2 Cookie的引出
- 1.3 Cookie工作原理
- 1.4 Cookie重要结论
- 2. Session
- 2.1 认识Session
- 2.2 Session的引出
- 2.3 Session的工作原理
- 3. Cookie和Session的区别
1. Cookie
1.1 认识Cookie
- Cookie:是小型文本文件,是某些网站用来辨别用户身份,进行Session跟踪而存储在用户本地硬盘上的数据,即客户端保存客户信息的一种机制。
1.2 Cookie的引出
- web程序是使用HTTP协议传输的,而HTTP协议是无状态的协议,对于事物处理没有记忆能力。缺少状态就意味着如果后续处理需要前面的信息,则必须要重传,这样可能导致每次连接传送的数据增大。另一方面,在服务器不需要先前信息时它的应答就比较快。
- Cookie的出现就解决了这个问题:例子:医院里面的就诊卡,不管你挂号,做检查,买药都需要就诊卡,而每次刷的就诊卡就相当于是使用Cookie中的信息,来让服务器对客户端有一个清楚的标识。
1.3 Cookie工作原理
1.4 Cookie重要结论
- Cookie从何而来: Cookie由浏览器首次访问/登录服务器之后返回给浏览器的。
- Cookie到哪里去:Cookie会存储在浏览器本地主机的硬盘上,后续每次访问服务器都会带上Cookie。不同的客户端保存的Cookie是不同的。即使同一个主机使用不同的浏览器,Cookie大概率也不同。
- Cookie中存什么:键值对格式的数据,这里的内容都是程序员自定义的。
- Cookie在浏览器如何组织:在硬盘本地保存,是按照不同的域名为维度分别存储。一个浏览器访问百度有一组Cookie,访问其他浏览器各有一组Cookie。
- Cookie,用来在客户端保存数据。最主要的是通过保存用户的身份标识,从而服务器就可以通过标识来区分用户。
2. Session
2.1 认识Session
Session,即会话,是服务器为了保存用户信息而创建的一个特殊对象。
2.2 Session的引出
- 会话是一个客户端与服务器之间的不中断的请求响应。服务器同一时刻收到的请求很多,服务器需要清楚的区分每个请求是从属于哪个用户,属于哪个会话,就需要在服务器这边记录每个会话以及与用户信息的对于关系。
2.3 Session的工作原理
- Session的本质是一个哈希表,存储了一些键值对结构,key就是SessionID,Value就是用户信息。
- SessionID是由服务器生成的一个唯一性字符串,从Session机制的角度看,可以把这个唯一字符串称为SessionID,在整个登录流程中,可以把这个唯一字符串称为token。
- Session机制:
- 当用户登录的时候,服务器在Session中新增一个新记录,并把SessionID返回给客户端(通过HTTP响应的Set-Cookie字段返回)。
- 客户端后续再给服务器发送请求的时候,需要在请求中带上SessionID(通过HTTP请求中的Cookie字段带上)
- 服务器收到请求之后,根据SessionID在Session信息中获取到对应的用户信息,再进行后续操作,找不到则重新创建Session,并把SessionID返回。
3. Cookie和Session的区别
- Session默认是保存在内存当中,重启服务器则Session数据就会丢失
- Cookie是客户端保存用户信息的一种机制,Session是服务器端保存用户信息的一种机制
- Cookie和Session之间主要是通过SessionID关联,SessionID是Cookie和Session之间的桥梁
- Cookie和Session经常会一起配合使用,但不是必须配合:
- 完全可以用Cookie来保存一些数据在客户端。这些数据不一定是用户信息,也不一定是SessionID。
- Session中的SessionID也不需要非得通过Cookie/Set-Cookie传递,比如URL传递。
- Cookie不是很安全,别人可以分析存放在本地的Cookie并进行Cookie欺骗
- 当访问较多,比较占用服务器的性能,考虑到减轻服务器性能方面,应当使用Cookie。