网络分层:
OSI 网络参考模型 | TCP/IP协议簇 | |
7 应用层 | DNS、HTTP、SSH、SMTP、FTP... | 5 应用层 |
6 表示层 | ||
5 会话层 | ||
4 传输层 | TCP、UDP、SCTP | 4 传输层 |
3 网络层 | IPv4、IPv6、ARP、ICMP | 3 网络层 |
2 数据链路层 | 以太网(Ethernet)、无线LAN | 2 数据链路层 |
1 物理层 | 光纤、双绞线电缆、无线设备 | 1 物理层 |
HTTP协议
常用请求头:
Content-Type:请求的报文格式
Accept:客户端接收的数据类型
User-Agent:发送请求的客户端类型
X-Request-with:Ajax请求,异步请求
Cookie:请求携带的Cookie信息
常见响应头:
Set-Cookie:服务器返回给客户端的Cookie信息
一、Cookie以及Cookie鉴权原理
1.什么是Cookie?
cookie不是缓存,cookie是服务器产生的并且保存在客户端的一小段文本信息,格式是字典,键值对
类型:
会话级Cookie:
持久化Cookie:
2.Cookie查看方式
查看单个项目:F12 --> application --> Cookies
查看本地所有:浏览器设置 --> 隐私设置和安全性 --> Cookie及网站数据 --> 查看所有的Cookie和网站数据
name:名称
value:值
Domain:作用的服务器地址
path:作用的路径
Expries:声明周期
Size:大小
3.Cookie鉴权原理
如何判断有Cookie鉴权?
只有多个请求之间有相同的Cookie,那么必然存在Cookie鉴权
鉴权步骤:
1.客户端第1次访问服务器的时候,服务器会生成Cookie,然后通过响应头里面的Set-Cookie传输到客户端,然后保存。
2.客户端第2-N次访问服务器时,在请求头里面通过Cookie把我们保存在本地的Cookie信息传输到服务器以实现鉴权。
4.对于测试有什么用
Postman:自动的保存和发送Cookie
Bug场景:接口地址,接口参数,请求方式,请求头全对,但是返回错误,可以清除postman的Cookie缓存。
Jmeter:对于web项目的接口有一个不用的组件:HTTP Cookie管理器。此组件的作用和浏览器自动保存Cookie以及自动填写的Cookie的作用一模一样的。
接口自动化requests:手动关联。
致命的缺点:不安全;一般Cookie保存的是一些不重要的数据
二、Session以及Session鉴权原理
session叫会话
1.session如何实现鉴权?
鉴权步骤:
1.客户端登录访问服务器的时候,服务器会生成Session,一般用sessionID表示,然后通过响应头里面的Set-Cookie传输到客户端,然后保存。所有的sessionID全部是会话级。session是通过cookie传输。
2.客户端第2-N次访问服务器时,在请求头里面通过Cookie把我们保存在本地的Sessionid信息传输到服务器以实现鉴权。
2.对于测试有什么作用
功能测试:当session失效(登录状态失效)之后系统的反应。session默认的生命周期是半小时,
解决方案:改中间件的配置文件。Tomcat / conf.xml,web.xml
<timeout-session>时间</timeout-session>
接口自动化测试:sess = requests.session(); 它可以自动的关联cookie鉴权。
缺点:
session保存在服务器,占用服务器的内存。
三、Token以及Token鉴权原理
token:鉴权码
1.token如何实现鉴权
第一步:一般是登录之后自动生成token或者是通过一个独立的接口生成token,然后保存在服务器硬盘或者是数据库里面。
第二步:后面所有的请求都必须在请求头里面或者请求参数里面带上token实现鉴权。
token一般是经过加密,并且是有生命周期。
token一般有两类:
1.assess_token:生命周期在15分钟-2小时之间。
2.refresh_token:生命周期是15天。
加密:
对称加密算法:DES,AES,Base64
双钥加密:RSA
只加密不解密:MD5,SHA
自定义的加密方式:混合加密
面试题:cookie,session,token的相同点和区别是什么?
相同点:都是用于鉴权,都是服务器生成的;
不同点:
cookie保存客户端,session保存在服务器的内存,token保存在服务器的硬盘
cookie一般保存不重要的信息,session一般保存登录等重要的信息,token只用于鉴权。