01
—
引言
作为一个测试工程师,做接口自动化时,难免会遇到接口之间的关联以及登录接口等,所以了解cookie和session、token是必备的,下面这篇文章来给大家简单介绍Cookie和Session。
02
—
Cookie
什么是Cookie
目前大部分网络都是采用HTTP协议,那么HTTP协议本身是没有状态的。等同于,服务器无法判断用户的身份,cookie实质是以一个Key-value格式保存的。客户端向服务器发送请求时,response向客户端发送一个cookie,客户端将此cookie保存起来(保存于客户端),当浏览器再次发起请求时,在请求信息里将cookie一并发送给服务器,服务器检查该cookie,可以校验用户的状态。
Cookie的运行流程
实例-登录京东
登录京东
退出登录
回到登录界面,查看Cookie信息
会发现上次登录的用户名(手机号码)已经回显在页面上
F12->Appication->Cookie
mp就是我们填写的用户名
Cookie是有过期机制的,Expires是过期时间,相当于一个月之内登录京东,都会看到手机号码回显效果
03
—
Session
什么是Session?
Session 是存放在服务器端的,当浏览器第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标识这个Session,并将其通过响应发送到浏览器。当浏览器第二次发送请求,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的Session。
运行机制
服务器生成、存储、验证,以cookie的方式传给客户端,客户端以同样的方式发送给服务端。session有状态。
Session的过期机制与Cookie的区别?
当服务器端的会话过期了,那么当你继续发起请求的时候,因为你从客户端带过去的会话编号还是之前的那个,就会验证不通过,就会提示你会话过期请重新登录。
Cookie有效时间是写入过期是什么时候,到了这个时间就自动过期,而session的过期一般通过监听系统最后一次访问,如果最近一次访问跟当前访问超过了这个时间,服务端的session就会过期,如果在不断的使用这个系统,那么系统的访问时间会一直不停的更新。
session默认失效时间是30min
Session的弊端?
如果做了负载均衡的话,搭建了多个服务器,虽然每个服务器都执行的是同样的业务逻辑,但是session数据是保存在内存中的(不是共享的),用户第一次访问的是服务器1,当用户再次请求时可能访问的是另外一台服务器2,服务器2获取不到session信息,就判定用户没有登陆过。
04
—
python发起cookie+session方式进行鉴权
import requests
# 创建session对象,后面直接使用创建的对象发送请求即可
# requests库的session会话对象可以跨请求保持某些参数
s = request.session()
url = 'http://api.juheapi.com/japi/toh'
data = {
"key":"7486da7f50cd55e6774fb3311b526d**",
"v":'1.0',
"month":12,
"day":15
}
response = s.post(url=url,data=data)
print(response.json())
05
—
PS
大家有问题,可以通过公众号首页添加作者微信,多交流,多沟通;
很久没更新了,后续会继续抽时间继续更新;