【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机制:
    1. 当用户登录的时候,服务器在Session中新增一个新记录,并把SessionID返回给客户端(通过HTTP响应的Set-Cookie字段返回)
    2. 客户端后续再给服务器发送请求的时候,需要在请求中带上SessionID(通过HTTP请求中的Cookie字段带上)
    3. 服务器收到请求之后,根据SessionID在Session信息中获取到对应的用户信息,再进行后续操作,找不到则重新创建Session,并把SessionID返回

在这里插入图片描述

3. Cookie和Session的区别

  • Session默认是保存在内存当中,重启服务器则Session数据就会丢失
  • Cookie是客户端保存用户信息的一种机制,Session是服务器端保存用户信息的一种机制
  • Cookie和Session之间主要是通过SessionID关联,SessionID是Cookie和Session之间的桥梁
  • Cookie和Session经常会一起配合使用,但不是必须配合
    1. 完全可以用Cookie来保存一些数据在客户端。这些数据不一定是用户信息,也不一定是SessionID
    2. Session中的SessionID也不需要非得通过Cookie/Set-Cookie传递,比如URL传递
  • Cookie不是很安全,别人可以分析存放在本地的Cookie并进行Cookie欺骗
  • 当访问较多,比较占用服务器的性能,考虑到减轻服务器性能方面,应当使用Cookie
  • 24
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值