Cookie和Session的关联和区别

一,Cookie

1.什么是Cookie

Cookie是浏览器提供的持久化存储数据的机制;我们都知道HTTP协议自身属于“无状态”协议,默认情况下HTTP协议的客户端和服务器之间的这次和下次通信之间是没有直接联系的;但是实际开发中,很多时候需要知道请求之间的关联的(例如网站登录成功后,第二次访问的时候服务器就能知道该请求是否已经登录过了)

2.Cookie是从哪来的

Cookie是从服务器返回给浏览器的,服务器代码中由程序员决定要把啥样的信息保存到客户端这边,Cookie可通过HTTP响应的Set-Cookie字段把键值对写回去

3.Cookie到哪里去

Cookie会在后续浏览器访问服务器的时候带到请求的header中发送给服务器(因为服务器不止给一个客户端服务,同一时刻要处理多个客户端,此时服务器可以通过Cookie中的值来识别当前客户端是谁,当前客户端的服务提供到哪个环节了)

4.Cookie存储在哪

Cookie存储在浏览器(客户端)所在主机的硬盘中,浏览器会根据域名来分别存储

5.Cookie的作用

Cookie的用途很多,它的典型应用是:表示用户的身份信息

图示为PC端网页版淘宝登录功能:

二,Session(会话机制)

1.什么是Session(会话机制)

服务器同一时刻收到的请求是很多的,服务器需要清楚的区分清楚每个请求是从属于哪个用户,就需要在服务器这边记录每个用户令牌(sessionId)以及用户的信息的对应关系(上述淘宝登录的案例中服务器返回给浏览器的身份序号就是用户令牌sessionId,每个身份序号都会对应一个用户的身份信息)

会话的本质就是一个“哈希表”,存储了一些键值对,key就是令牌的ID(session/token),value就是用户信息(用户信息可以根据需求灵活设计),sessionId是由服务器生成的一个“唯一性字符串”,从session机制的角度来看,这个唯一性字符串称为“sessionId”,但是站在整个登录流程中看待,也可以把这个唯一性字符串称为“token”

2.Session和Cookie的关联

  • 当用户登陆的时候, 服务器在 Session 中新增一个新记录, 并把 sessionId / token 返回给客户端. (例如通过 HTTP 响应中的 Set-Cookie 字段返回).

  • 客户端后续再给服务器发送请求的时候, 需要在请求中带上 sessionId/ token. (例如通过 HTTP 请求中的 Cookie 字段带上).

  • 服务器收到请求之后, 根据请求中的 sessionId / token 在 Session 信息中获取到对应的用户信息, 再进行后续操作.

3.Session和Cookie的区别

  • Cookie 是客户端的机制. Session 是服务器端的机制.

  • Cookie 和 Session 经常会在一起配合使用. 但是不是必须配合.

  1. 完全可以用 Cookie 来保存一些数据在客户端. 这些数据不一定是用户身份信息, 也不一定是token / sessionId

  1. Session 中的 token / sessionId 也不需要非得通过 Cookie / Set-Cookie 传递.

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值