一文理解 Cookie 和 Session

1.所含内容: 是⼀堆键值对,由程序员⾃定义,⼀般⽤于记录⽤户习惯.(其中往往会有⼀个键值对作为⽤户的身份标识,⾃动登录时使⽤即SessionId)
2.从哪⾥来: 客户端通过js⾃动写⼊或是服务器返回给浏览器
3.保存在哪⾥: 保存在浏览器上(硬盘),每个域名都有⼀组⾃⼰的Cookie,并且Cookie是有 有效期的
4.到哪⾥去: 后续访问这个⽹站中的各个⻚⾯,就会在请求中带上Cookie

Session

Session字如其名:会话的意思.

常常用于自动登录,其是一个对象,内部也是一堆键值对,而上面我们提到的SessionId则是去寻找session对象的.


自动登录的流程

  1. 首先我们第一次打开一个网站后,是一定处于未登录状态的,而此时浏览器也没有该网站的Cookie
  2. 而当我们输入完密码后,点击登录的操作后,浏览器会发送一个请求(该请求是包含了账号密码信息)
  3. 如果账号密码都正确,此时服务器会发送一个响应,而该响应报头中会带有这一个键值对(这里不讲http的协议格式)

image

而这个set-Cookie就是叫浏览器设置Cookie,而这个Cookie中设置了一个SessionId(JSessionId),SessionId是服务器生成的一个独一无二的Id

(ps:往往set-Cookie会带有很多值,但是这是博主自己写的一个简单的项目,所以使用的Cookie很少)

4.此时我们重新打开这个网站,必然会产生一个请求,而这个请求中会带有Cookie,当我们的服务器看到了这个Cookie后会根据Cookie做出相应的处理(我们这里不讲),而此时服务器看到了Cookie中的SessionId则会去服务器的内存上的SessionId-Session的哈希表寻找是否有这个Id.

image

如果有,则会获得到对应的Session对象,而这个Session对象里面会有一堆键值对,其中一个键值对会用于判断是否处于登录状态.

  1. 如果该对象内有那对键值对则会返回响应自动进行跳转(跳过登录页面).

通俗的例子解释Session和SessionId和Cookie的关系

Cookie就类似我们的学生证,而SessionId则是学生证上的一个用于登录教务群系统的学号,而我们要拿着这个学号登录教务系统才能获取到我们的相关信息.

很简单吧?

posted on 2023-11-09 17:04  沐阳Yo  阅读(94)  评论(0)    收藏  举报