Session和Cookie的应用和区别

Session和Cookie的应用

背景

我们知道http请求是一个无状态的协议并且是短连接的。也就是说每次请求响应,都会新建连接,响应完成之后就会关闭连接。

但是我们有些资源需要登录之后才可以访问,但是http登录这个请求完成之后就会关闭这个连接,所以我们为了判断是否进行过登录操作(是否可以访问到敏感资源),一般就会加入Cookie字段和Session字段来判断是否进行过登录操作。

Session

Session的应用

就是为了保持用户的身份,让服务器端和客户端可以保持正常的会话功能,主要就是为了解决登录的敏感资源的访问的问题

Session的实现

我们在服务器端登陆的时候创建一个用当前客户的sessionId,然后储存在服务器中。

Session实现的流程
  1. 根据当前登陆的用户的信息,然后生成随机字符串sessionid,保存在服务器端的用户信息数据结构中,每一个sessionid只能绑定一个用户,一个用户可以有多个信息
  2. 会把sessionid放在响应头,头信息的键值对,键是服务器端和客户端约定好的,然后值就是sessionid
  3. 客户端之后的所有请求都会携带sessionid,以便服务器端查询这个用户是否有访问这个资源的权限
            // 从客户端获取jsessionid 然后从服务端Map中获取session对象
            // 参数为false 获取不到,返回null
            // 参数为true 获取不到,服务器创建一个 (无参为true)
            // HttpSession session = req.getSession(false);
            // 创建session
            HttpSession session = req.getSession(true);
Session的注销

Session会在会话结束,会话超时,会话注销,以及服务器端关闭的时候被删除。

Cookie

Cookie的应用

使用场景就是免登录,我们有时在浏览器上进入某一个网站的时候,然后关闭浏览器,然后打开这个浏览器,进入同样的网站的时候,我们就会发现不需要再次登陆了。

Cookie的实现

Cookie会将用户信息保存在客户端本地。也就是说当我们进入这个网站登录之后,这个浏览器就会把这个用户信息保存在和自身相关的本地路径下,保存用户信息成为本地文件。不过这个Cookie信息一般是有时间的,若是你长时间没有登录这个网站,这个Cookie信息就会被删除。

当域名(网站)绑定用户的信息的Cookie,之后访问这个域名的时候,浏览器(客户端)就会自动从本地抓取该域名的Cookie信息

Cookie实现的流程
  1. 根据当前登陆的用户的信息,生成一个Cookie信息,保存在本文件中
  2. 登录成功后,就会有响应头Set-Cookie,之后每次的浏览器(客户端)的请求都会自动携带Cookie,然后服务器解析Cookie用来校验用户的信息。
Cookie的注销

我们找到Cookie的本地文件删除就可以了,或者就是过段时间,长时间未使用这个Cookie,那木Cookie就会被客户端自动删除。

Cookie和Session的区别

  1. 存取方式不同,Cookie只能保管ASCII字符串,获取别的类型的数据之时需要先进行编码,也不可以直接存储 Java对象。Session可以存取任何类型的数据。
  2. 隐私策略不同, Cookie存储在客户端的本地文件中,对客户端是可见的,不安全。而Session是存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。
  3. 有效期不同,Cookie是可以长久的保存在本地文件中,通过设值Cookie的过期时间属性来保存Cookie的,常常用于免登录。但是Session不可以,Sesion中JSESSONID的过期时间默许为-1,一旦会话的结束和超时或者服务器端重启,这个Sesssion就会失效。
  4. 服务器的压力,Session储存在服务器端,而一旦服务器端的Session过多(并发访问服务器的人数过多),服务器的内存就容易溢出。Cookie保存在客户端,不占用服务器资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值