没有娃娃菜怎么吃火锅 进来随便坐
cookie和session
发布于: 2020-04-01 更新于: 2020-04-19 分类于:  阅读次数: 

cooike和session的一些学习笔记 我还没写(xue)完

1.1 cookie简介

cookie是一种进行网络会话状态跟踪的技术。

会话由一组请求与响应组成,是围绕一件事情所进行的请求与响应,所以这些请求与响应之间是需要由数据传递的。但是HTTP协议是一种无状态协议(这一次的请求和响应与下一次没有任何关系,这一次的数据下一次获取不到),需要进行会话状态跟踪。=>cookie

cookie是由服务器生成,保存在客户端的一种信息载体。这个载体中存放着用户访问该站点的会话状态信息。

用户在提交第一次请求后,服务器生成cookie并将其封装到响应头(Response Header)中,以响应的形式发送给客户端。客户端接收到这个响应后,将cookie保存。当客户端再次发送同类请求后,在请求中会携带保存在客户端的cookie数据,发送到服务端,由服务器对会话进行跟踪。

cookie由若干键值对构成。

2.session

2.1 session简介

session是一种会话状态跟踪技术。

什么是“会话”

=>(用户能感知到的)当用户打开浏览器,从发出第一次请求开始,一直到最终关闭浏览器,表示一次会话完成。

=>(对于客户端来说)从第一次请求到session失效,会话结束。

2.2 session的工作原理

在服务器中系统会为每个会话创建一个session对象。不同的会话对应不同的session,系统是如何做到在同一个会话过程中,一直使用的是同一个session对象呢?

2.2.1 写入session列表

当用户第一次提交请求时,服务端servlet中执行到request.getSession()方法后,会自动生成一个键值对——key为一个32位长度的随机字符串,称为JSessionID,value为新创建的HttpSession对象。

2.2.2 服务器生成并发送cookie

系统自动将“JSessionID”作为name,32位长度的随机串作为value,以cookie的形式放到响应头中,伴随响应将其发送到客户端。

2.2.3 客户端接收并发送cookie

客户端接收到这个cookie后会将其存放到浏览器的缓存中。只要浏览器不关,缓存中的cookie就不会消失。
当用户第二次提交请求时,会将这个cookie伴随请求头信息一起发给服务器。

2.2.4 从session列表中查找

服务端从请求中读取到客户端发来的cookie,根据cookie的JSessionID的值,从map中查找相对应的value,即session对象。然后对该session对象的域属性进行读写操作。

2.3 session的失效

默认session的超时时间为30分钟,从最后一次访问开始计时

2.4 cookie禁用后的session

拿到JSessionID将其放到地址里,所以有些网站为了保证安全性,要求必须打开cookie。(不然你的JSessionID明文显示在地址栏里被别人拿到就不好了

3.sessionstorage和localstorage

3.1 一些特点

  • 存储大小:5M
  • 存储于客户端
  • 只能存储字符串类型

3.2 如何存储、获取、删除和清空所有

window.sessionStorage.setItem("key","value")//存储
window.sessionStorage.getItem("key")//获取
window.sessionStorage.removeItm("key")//删除
sessionStorage.clear()//清空所有

localStorage是一样的,只要将sessionStorage替换即可。

4.总结

(这个表格怎么可以这么丑 等我闲了就过来自己写好吧)

方面 cookie localstorage sessionstorage session
存储位置 客户端 客户端 客户端 服务端
特点 随请求头每次提交 不随请求头提交,可长时间保存 不随请求头提交,页面关闭即失效 安全
同源性 可跨页,不可跨域 可跨页,不可跨域 不可跨页,不可跨域 可跨页,不可跨域
--- 本文结束 The End ---