Cookie和Session学习笔记

 

诞生在浏览器中,Session 保存到服务器中

会话:

       一次会话 浏览器第一次给服务器发送请求,会话建立,直到有一端断开位置

       功能:

              共享数据

HTTP协议

请求:

  • 超文本传输协议,主要用于浏览器和服务器之间的交互,交互分为请求和响应  
  • 是无状态的
  • HTTPS = http+ssl 安全传输协议,端口443
  • 请求:
  • 请求行
  • 请求头
  1. Content-Type:请求的报文格式
  2. Accept: 客户端接收的数据类型
  3. User-Agent:发送请求的客户端类型
  4. X-Request-with:Ajax请求,异步请求
  5. Cookie:请求携带的Cookie信息
  • 请求正文

响应:

  • 响应行
  • 响应头
  1. Set-Cookie:服务器返回给客户端的Cookie信息

http协议的特点:简单,快捷,无连接,无状态

无连接,无状态:值得是多个请求之间是没有关联的,是独立的

方式:

       客户端会话技术:cookie

       服务器端会话技术:session

 

使用步骤:

       创建cookie对象 绑定数据

              new Cookie()

       发送cookie对象

              Response.addCookie();

       获取cookie,拿到数据

              Request.getCookies();

 

 

 

 cookie的细节:

   一次可不可以发送多可cookie

    可以创建多个cookie对象,使用repsonse的addCookie方法发送cookie即可

  cookie可以在浏览器中保存多长时间

  1. 默认情况下,cookie存在浏览器的内存里,当浏览器关闭后,cookie数据销毁
  2. 持久化存储,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有两类
  1. 会话级cookie:会话级cookie保存在内存,当浏览器关闭时会自动失效
  2. 持久化cookie:持久化cookie保存在硬盘,只有当失效时间到了才会自动失效(时间是有技术开发人员去设置的)

2:cookie的查看方式

单个项目:

键盘F12后, 查看application的cookies:

  • name:名称
  • value:值
  • Domain:cookie作用的域名
  • Path:作用的路径
  • Expires/Max-Age:最大生命周期,session代表是会话级,关闭客户端即失效或被删除,
  • size:大小

 

 

当前浏览器 所有cookies

查看浏览器的设置,即可

3:cookie的鉴权原理

只要多个请求之间有相同的cookie,那就必然存在cookie鉴权

 

 

 

 

 

 鉴权步骤:
  1. 客户端第1次访问服务器时,服务器生成cookie,然后通过响应头里的set-cookie传输到客户端,然后保存
  2. 客户端第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是否是同一个

  • 不是用一个,但是要确保数据不丢失,
  1. session 的钝化,在服务器正常关闭之前,将session对象序列化到硬盘上
  2. session 的活化:在服务器启动后,将session文件转化为内存中的session对象即可

session的失效时间

  • 服务器关闭
  • session对象调用 invalidate();
  • session 的默认失效时间是 30 分钟

Session的特点

  • Session用于存储一次会话的多次请求的数据,存在服务器端
  • Session可以存储任意类型,任意大小的数据

session的鉴权

鉴权步骤:
  1. 客户端登录访问服务器时,服务器生成session,一般用sessionId表示,保存在服务器,然后通过响应头里的set-cookie传输到客户端.所有的sessionId全部都是会话级cookie,session 是通过cookie传输的.
  2. 客户端第2-N次访问服务器时,那么请求头里面都会通过session把我们保存在本地的sessionId信息传输到服务以实现鉴权

token以及token鉴权原理:

1:token如何实现鉴权

  1. 一般是登录之后自动生成token或者通过一个独立接口生成token,然后保存在服务器的硬盘或者数据库中
  2. 后面所有的请求都必须在请求头里或者请求参数里带上token实现鉴权

token一般是经过加密的,并且是有生命周期的

token一般有两类:

  1. access_token:生命周期在15分钟到2小时
  2. refresh_token:一般15天

加密方式:

  1. 对称加密算法:DES,AES,Base64
  2. 双钥加密:RSA
  3. 只加密不解密:MD5,SHA
  4. 自定义的加密方式:混合加密

session和cookie的区别

  • session存储数据在服务器端,cookie存储在客户端
  • session没有数据大小的限制,cookie有
  • session数据安全,cookie相较于不安全

 cookie,session和token的相同点和区别:

相同点:

  • 都是用于鉴权,都是服务器生成的

不同:

  • cookie保存在客户端,session保存在服务器的内存,token保存在服务器的硬盘或数据库
  • cookie一般保存不重要的信息,session一般保存登录等重要信息,token只用于鉴权
posted @ 2022-08-09 19:04  着迷JAVA  阅读(61)  评论(0)    收藏  举报