cooike和session的一些学习笔记 我还没写(xue)完
1.cookie
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 |
---|---|---|---|---|
存储位置 | 客户端 | 客户端 | 客户端 | 服务端 |
特点 | 随请求头每次提交 | 不随请求头提交,可长时间保存 | 不随请求头提交,页面关闭即失效 | 安全 |
同源性 | 可跨页,不可跨域 | 可跨页,不可跨域 | 不可跨页,不可跨域 | 可跨页,不可跨域 |
Be the first person to leave a comment!