接口测试大讲堂--(cookie、session、token理解与案例--第六讲)

 哈喽。大家好,我是思思。这一篇文章我们将彻底了解cookie、session、token到底是个啥?为什么要用到这些技术?

学完这节课,必须掌握的内容有:

1.cookie特点及应用场景

2.session工作流程

3.普通登录使用cookie和session机制流程

4.token原理及应用场景

目录

前言:无状态的HTTP协议

一.cookie概念及流程

1.cookie特点

2.cookie使用场景举例

3.总结cookie流程

二.session概念及流程

1.session的特点

2.session流程

三.利用cookie和session技术相结合实现登录流程

2.使用cookie和session弊端

四.token的使用

1.token特点

2.C/S交互图

3.实例理解token


前言:无状态的HTTP协议

Web应用中,http协议是无状态的。也就是说你这次访问了服务器,关闭网页,再次访问服务器,服务器是不知道又是你来访问的。

总结:HTTP协议最大的特点就是每一次通信,页面加载完成,通信结束,连接就断开。

不知道是我访问,怎么保持登录状态呢?但是登录后后的网站为什么不需要再次登录账号和密码了呢?同学们,你们有没有这样的困惑呢?

其实核心的问题在于存储,比如我们在仓库管理系统wms上注册了以后,wms系统就会把该账号和密码存储在数据库里。下次再次请求系统时,wms就会根据输入的用户名密码,和db做比对。匹配成功就登录成功。

问题来了,假如我不想每次请求wms系统的时候,都要输入用户名和密码怎么办?

思考:能不能把用户名密码存储在浏览器呢?

一.cookie概念及流程

1.cookie特点

cookie是客户端技术,可以将数据存储到客户端(浏览器),然后每次请求访问的时候,都会携带 cookie 数据访问。其特点有:

1) cookie数据由服务器生成,发送给浏览器保存

2)cookie是一门客户端缓存技术

3)cookie数据格式:key-value

4) cookie数据过期机制:设置expire值

2.cookie使用场景举例
  • 记住我
  • 未登录的购物车

以wms系统的登录功能为例,第一次访问网站输入用户名密码时,可以选择让系统记住用户名密码,下次就不用重新输入了,这就是典型的Cookie的应用。

1)打开wms网站,输入用户名和密码,点击记住密码:

2)点击退出登录

3)登录页面再次登录发现用户名和密码已经被记住在对应的textbox里(从cookie里取出的数据)

3.总结cookie流程

cookie来自于服务器,存储于浏览器,再发送到服务器。

  • 首先用户在客户端浏览器向服务器首次发起登录请求
  • 登录成功后,服务端会把登录的用户信息设置在cookie中,并将cookie返回给客户端浏览器
  • 客户端浏览器接收到cookie请求后,会把cookie保存在本地
  • 以后再次访问该web应用时,客户端浏览器就会把本地的cookie带上,这样服务端就能根据cookie获得用户信息了

注意点:

  • 第一次发送请求的时候是没有附带cookie的,因为服务器收到请求才会设置cookie。
  • 只要是在有效期内,关闭浏览器再次打开依然是可以获取到用户名及密码值的。
  • cookie 常用来标记用户或授权会话,被浏览器发出之后可能被劫持,被用于非法行为,可能导致授权用户的会话受到攻击,因此存在安全问题。

二.session概念及流程

session是标记放在你浏览器,但是数据在网站服务器数据

1.session的特点

1)session是一门服务端会话缓存技术。

2)session由服务器端的web容器创建,保存在服务器端。

3)session保存数据:键值对形式

4)session过期:默认30分钟

session 和 cookie 没有直接的关系。可以认为 cookie 只是实现 session 机制的一种方法途径而已,没有 cookie 还可以用别的方法。

2.session流程

首先用户登录,server 会为用户生成一个 session,为其分配唯一的 sessionId,这个 sessionId 是与某个用户绑定的,也就是说根据此 sessionid(假设为 abcd) 可以查询到它到底是哪个用户,然后将此 sessionid 通过 cookie 传给浏览器,sessionId 需要借助 cookie 的传递才有意义。

  • 首先用户在客户端浏览器发起登录请求
  • 登录成功后,服务端会把用户信息保存在服务端,并返回一个唯一的session标志给客户端浏览器
  • 客户端浏览器会把这个唯一的session标识保存起来
  • 以后再次访问web应用时,客户端浏览器会把这个唯一的session标识带上,这样服务端就能根据这个唯一标识找到用户信息

三.利用cookie和session技术相结合实现登录流程

1.普通登录流程

  • 用户在浏览器端输入用户名和密码。
  • 浏览器将用户输入的用户名和密码打包成一个HTTP请求发送给服务器。
  • 服务器接收到请求后,对用户名和密码进行校验。
  • 如果用户名和密码正确,服务器会生成一个session ID(会话标识),并将该session ID 存储在服务器端。
  • 然后服务器将生成的session ID 通过Set-Cookie的方式将其返回给浏览器端。Set-cookie是一个HTTP响应头字段,用于设置Cookie。
  • 浏览器接收到服务器返回的session ID 后,会将该session ID 存储在本地的cookie中。
  • 当用户发起下一次请求时,浏览器会自动将存储在cookie中的Session ID 添加到该请求的HTTP头部中。
  • 服务器通过读取请求中的session ID 来验证用户的身份。

上述过程中,用户的身份信息不会直接传输给服务器,而是通过session ID 进行验证。这样做的好处是可以减少敏感信息的传输,并增加登录的安全性。

2.使用cookie和session弊端

cookie有安全隐患,浏览器遭受攻击,无法解决跨域问题

session在集群的环境中,通过某个服务进行了session的存储,但下一次请求进来的时候可能经过负载均衡,就将其放到了另外一个服务上,但这个服务并没有上一次的session,就无法再次进行身份识别了,这个session也会失效

四.token的使用

token 是令牌的意思,由服务端生成并发放给客户端,是一种具有时效性的验证身份的手段。Token 避免了 Session 机制带来的海量信息存储问题,也避免了 Cookie 机制的一些安全性问题,在现代移动互联网场景、跨域访问等场景有广泛的用途。请求完登录接口,后端会返回token,前端保存起来,并且封装你的网络请求,并在所有的请求头里,统一都把这个token带上,然后就可以跳转到登录页了。服务器一般会给token设置有效期,token失效后,接口就会返回一个特定的状态码(一般是401)。token作为接口测试时的鉴权码,一般情况下登陆后才可以获取到token,然后在每次请求接口时需要带上token参数。

1.token特点
  • token 可以跨站共享,实现单点登录;
  • token 机制无需太多存储空间。token 包含了用户的信息,只需在客户端存储状态信息即可,对于服务端的扩展性很好;
  • token 机制的安全性依赖于服务端加密算法和密钥的安全性;
2.C/S交互图

  • 客户端将用户的账号和密码提交给服务器;
  • 服务器对其进行校验,通过则生成一个 token 值返回给客户端,作为后续的请求交互身份令牌;
  • 客户端拿到服务端返回的 token 值后,可将其保存在本地,以后每次请求服务器时都携带该 token,提交给服务器进行身份校验;
  • 服务器接收到请求后,解析关键信息,再根据相同的加密算法、密钥、用户参数生成 sign 与客户端的 sign 进行对比,一致则通过,否则拒绝服务;
  • 验证通过之后,服务端就可以根据该 token 中的 uid获取对应的用户信息,进行业务请求的响应。

3.实例理解token

首次访问

输入正确的用户名密码后【用户名:admin 密码:123456】

此时,我们不关闭浏览器,在新开一个窗口,访问同样的资源,可以发现不用登录。

cookie、session、token 这三者是不同发展阶段的产物,并且各有优缺点,三者也没有明显的对立关系,反而常常结伴出现,这也是容易被混淆的原因。

cookie 侧重于信息的存储,主要是客户端行为。session 和 token 侧重于身份验证,主要是服务端行为。

高频面试题:

问:谈谈cookie、session和token的区别

答:cookie是存储在浏览器端的一小段文本数据,cookie的内容会随着http请求一起发送到服务端

session是存储在服务端的一组数据,一些网站是采用session机制来验证用户身份的,通常会把sessionId存储在cookie里

token在很多地方都会用到,token可以存储在cookie里,也可以存储在服务器的内存或者其他地方。token作为接口测试时的鉴权码,一般情况下登陆后才可以获取到token,然后在每次请求接口时需要带上token参数。

---------------------------------------------------------------------------------------------------------------------------------

免费提供接口测试大讲堂所有的讲义和本人讲的视频。🌏:sisiceshi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值