1.理解Cookie
在浏览器端访问服务器的时候,服务器会创建Cookie,这个Cookie中会包含客户端的一些用户信息,如何将该Cookie返回给浏览器端,当浏览器端再次访问服务器的时候,就会携带Cookie,服务器通过携带的Cookie来区分不同的用户
概念图
就像去医院看病一样
看病之前先挂号. 挂号时候需要提供⾝份证号, 同时得到了⼀张 "就诊卡", 这个就诊卡就相当于服务端创建的Cookie,
之后去各个科室检查,这些个人的情况就会存到这张就诊卡中,相当于客户端创建个人的Cookie的个人信息。
再进行看病的时候,只要把纠正卡给医生,医生就能知道你的个人情况了
2.理解Session
看一下这张图,理解一下会话
在计算机领域, 会话是⼀个客⼾与服务器之间的不中断的请求响应. 对客⼾的每个请求,服务器能够识 别出请求来⾃于同⼀个客⼾. 当⼀个未知的客⼾向Web应⽤程序发送第⼀个请求时就开始了⼀个会话. 当客⼾明确结束会话或服务器在⼀个时限内没有接受到客⼾的任何请求时,会话就结束了。
服务器同⼀时刻收到的请求是很多的. 服务器需要清楚的区分每个请求是从属于哪个⽤⼾, 也就是属于 哪个会话, 就需要在服务器这边记录每个会话以及与⽤⼾的信息的对应关系.
Session是服务器为了保存⽤⼾信息⽽创建的⼀个特殊的zai
工作原理
浏览器端第一次发送请求到服务器端,服务器端创建一个Session,并且服务器会为该用户生成一个唯一的SessionID,虽然SessionID保存在服务端,但是客户端通常会在Cookie中存储SessionID的标识符,以便在每次请求时将其发送给服务器,从而帮助服务器找到与该客户端相关联的会话数据。
概念图如下,每一个SessionID对应一个value.
1.当⽤⼾登陆的时候, 服务器在 Session 中新增⼀个新记录, 并把 sessionId返回给客⼾端. (通过 HTTP 响应中的 Set-Cookie 字段返回)
2.客⼾端后续再给服务器发送请求的时候, 需要在请求中带上 sessionId. (通过 HTTP 请求中的 Cookie 字段带上)
3.服务器收到请求之后, 根据请求中的 sessionId在 Session 信息中获取到对应的⽤⼾信息, 再进⾏后 续操作.找不到则重新创建Session, 并把SessionID返回
Cookie 和 Session 的区别
1.Cookie 是客⼾端保存⽤⼾信息的⼀种机制. Session 是服务器端保存⽤⼾信息的⼀种机制
2.Cookie 和 Session之间主要是通过 SessionId 关联起来的, SessionId 是 Cookie 和 Session 之间的 桥梁
3.Cookie 和 Session 经常会在⼀起配合使⽤. 但是不是必须配合
4.Session中的 sessionId 也不需要⾮得通过 Cookie/Set-Cookie 传递, ⽐如通过URL传递
session总结
简单的说,当你登陆一个网站的时候,如果web服务器端使用的是session,那么所有的数据都保存在服务器上,客户端每次请求服务器的时候会发送当前会话sessionid,服务器根据当前sessionid判断相应的用户数据标志,以确定用户是否登陆或具有某种权限。