Cookie和Session学习笔记
诞生在浏览器中,Session 保存到服务器中
会话:
一次会话 浏览器第一次给服务器发送请求,会话建立,直到有一端断开位置
功能:
共享数据
HTTP协议
请求:
- 超文本传输协议,主要用于浏览器和服务器之间的交互,交互分为请求和响应
- 是无状态的
- HTTPS = http+ssl 安全传输协议,端口443
- 请求:
- 请求行
- 请求头
-
Content-Type:请求的报文格式
-
Accept: 客户端接收的数据类型
-
User-Agent:发送请求的客户端类型
-
X-Request-with:Ajax请求,异步请求
-
Cookie:请求携带的Cookie信息
- 请求正文
响应:
- 响应行
- 响应头
- Set-Cookie:服务器返回给客户端的Cookie信息
http协议的特点:简单,快捷,无连接,无状态
无连接,无状态:值得是多个请求之间是没有关联的,是独立的
方式:
客户端会话技术:cookie
服务器端会话技术:session
使用步骤:
创建cookie对象 绑定数据
new Cookie()
发送cookie对象
Response.addCookie();
获取cookie,拿到数据
Request.getCookies();

cookie的细节:
一次可不可以发送多可cookie
可以创建多个cookie对象,使用repsonse的addCookie方法发送cookie即可
cookie可以在浏览器中保存多长时间
- 默认情况下,cookie存在浏览器的内存里,当浏览器关闭后,cookie数据销毁
- 持久化存储,setMaxAge(int seconds); 正数 将cookie写到硬盘的文件中,持久化存储,cookie存活时间, 负数:默认值 零: 代表删除cookie信息
cookie能不能存中文
tomcat8之前不可以 ,需要url转码, tomcat之后可以存储
cookie的共享问题
setPath();
不同服务器共享cookie的问题:只要一级域名相同,就可以共享
setDomain(.baidu.com""); news.baidu.com和 tieba.baidu.com可以共享了就
cookie的特点和作用
cookie存储数据在浏览器端,浏览器对于单个cookie的大小限制4kb,同一域名下最多20个
作用:cookie在不登录的情况下,完成服务器端对客户端的身份识别
Cookie以及Cookie的鉴权原理
1:什么是Cookie
- cokie不是缓存,cookie是服务器产生的并且保存在客户端的额一小段文本信息,格式的字典,键值对.key=value
- cookie有两类
- 会话级cookie:会话级cookie保存在内存,当浏览器关闭时会自动失效
- 持久化cookie:持久化cookie保存在硬盘,只有当失效时间到了才会自动失效(时间是有技术开发人员去设置的)
2:cookie的查看方式
单个项目:
键盘F12后, 查看application的cookies:
- name:名称
- value:值
- Domain:cookie作用的域名
- Path:作用的路径
- Expires/Max-Age:最大生命周期,session代表是会话级,关闭客户端即失效或被删除,
- size:大小

当前浏览器 所有cookies
查看浏览器的设置,即可
3:cookie的鉴权原理
只要多个请求之间有相同的cookie,那就必然存在cookie鉴权


鉴权步骤:
- 客户端第1次访问服务器时,服务器生成cookie,然后通过响应头里的set-cookie传输到客户端,然后保存
- 客户端第2-N次访问服务器时,name请求头里面都会通过Cookie吧我们保存在本地的cookie信息传输到服务以实现鉴权
session:
服务器端会话技术,再一次会话的多次请求间共享数据,将数据保存在服务器端的对象中,HttpSession
获取HttpSession对象:request.getSession();
使用HttpSession对象:Object reponse.setAttribute();
void setAttribute();
void removeAttribute();
Session的实现是依赖于cookie的,
当客户端关闭后,服务器不关闭,两次获取的session是否是同一个
- 默认情况下不是,
- 创建一个cookie,cookie的键为JSESSIONID,设置最大存活时间,让cookie持久化保存
客户端不关闭,服务器关闭,两次获取的session是否是同一个
- 不是用一个,但是要确保数据不丢失,
- session 的钝化,在服务器正常关闭之前,将session对象序列化到硬盘上
- session 的活化:在服务器启动后,将session文件转化为内存中的session对象即可
session的失效时间
- 服务器关闭
- session对象调用 invalidate();
- session 的默认失效时间是 30 分钟
Session的特点
- Session用于存储一次会话的多次请求的数据,存在服务器端
- Session可以存储任意类型,任意大小的数据
session的鉴权
鉴权步骤:
- 客户端登录访问服务器时,服务器生成session,一般用sessionId表示,保存在服务器,然后通过响应头里的set-cookie传输到客户端.所有的sessionId全部都是会话级cookie,session 是通过cookie传输的.
- 客户端第2-N次访问服务器时,那么请求头里面都会通过session把我们保存在本地的sessionId信息传输到服务以实现鉴权
token以及token鉴权原理:
1:token如何实现鉴权
- 一般是登录之后自动生成token或者通过一个独立接口生成token,然后保存在服务器的硬盘或者数据库中
- 后面所有的请求都必须在请求头里或者请求参数里带上token实现鉴权
token一般是经过加密的,并且是有生命周期的
token一般有两类:
- access_token:生命周期在15分钟到2小时
- refresh_token:一般15天
加密方式:
- 对称加密算法:DES,AES,Base64
- 双钥加密:RSA
- 只加密不解密:MD5,SHA
- 自定义的加密方式:混合加密
session和cookie的区别
- session存储数据在服务器端,cookie存储在客户端
- session没有数据大小的限制,cookie有
- session数据安全,cookie相较于不安全
cookie,session和token的相同点和区别:
相同点:
- 都是用于鉴权,都是服务器生成的
不同:
- cookie保存在客户端,session保存在服务器的内存,token保存在服务器的硬盘或数据库
- cookie一般保存不重要的信息,session一般保存登录等重要信息,token只用于鉴权

浙公网安备 33010602011771号