接口自动化测试(3)状态码、请求头、响应头、token


一、常用状态码(重点!!)

200 请求成功
201 created :添加资源成功
204 No Content :删除资源成功
301 Moved Permanently 永久重定向(请求A的时候,会自动跳转到B)
302 临时重定项
400 Bad Request 客户端请求错误
401 Unauthorized 无权限访问该系统
403 Forbidden 有权限但是禁?访问
404 请求的资源不存在
405 不被允许的请求?法
415:只有请求头不对
500 服务器内部错误
504 GateWay Timeout网关超时

1.1 返回301:永久重定向

如在空白标签页进入www.360buy.com会跳转到京东,并且状态码显示为301(就说明此域名被永久重定向到京东的首页了),这种情况与开发确认即可。

 

 

1.2 返回400:Bad Request 客户端请求错误

1、请求头不对 2、请求参数不对

(检查发出的请求)

 

1.3  针对401和403在postman中认证(授权、鉴权)方式:

1、基本 basic

2、常规 digest

3、自定义

4、oauth2.0 (微信)

 

1.4  404:请求的资源不存在(检查请求路径)

 

 (资源路径错误返回404)

1.5  405:不被允许的请求方法

如果之前的方法都是允许的,但是突然所有方法都出现405,这可能是引入了安全体系,需要找运维把服务器ip地址增加到白名单里。

 

1.6  415:只有请求头不对

 

1.7  500 :服务器内部错误

 (开发问题)

 

1.8   504 :

网关超时---》不一定是程序员代码的问题,也可能是第三方的问题

APIgateway 网关:

1、统一API访问入口

2、监控API流量

 

二、请求头

请求头中内容:

cookie: 反爬虫 ,认证授权
referer:请求目标地址是从哪个页面发送过来的
content-type:表示什么样的数据格式
user-agent:表示访问目标服务器的是什么系统版本、浏览器、及版本信息

以上四个在请求时都需要输,进行伪装。有些内容可能为内部自定义请求头。

 

如:在拉钩网搜索职位,在postman中发送请求获取本页的信息:

需要在postman的Headers中输在拉勾网获取的cookie、referer、content-type、user-agent和Body中输在拉勾网获取的Payload请求参数。

三、响应头:

content-type:返回的响应数据是什么样的数据格式 (JSON XML HTML)

Set-cookie:服务端把生成的认证凭证信息返回给客户端

http://ws.webxml.com.cn/webservices/qqOnlineWebService.asmx?op=qqCheckOnline

 

四、cookie session token(重点!!)

HTTP是一个无状态的协议,所以也就导致了COOKIE技术的发展,通过COOKIE能够记下用户操作的行为状态,但是COOKIE它是存储在客户端的,所以就不安全,为了解决安全的问题,SESSION诞生,SESSION它是存储在服务端相对来说比较安全。后面移动互联网诞生,就有了TOKEN,TOKEN本质上是SESSION原理来实现的,它的流程与SESSION一样,它被称为一个令牌

4.1  COOKIE:

能够记下用户操作的行为状态

1、存储在客户端

2、不安全

以登录为例来说明COOKIE的流程:

1、客户端输入账户密码登录成功

2、在服务端生成COOKIE的信息,通过响应头中的SET-COOKIE把生成的COOKIE返回给客户端

3、客户端在下次请求的时候,通过请求头中的cookie把返回的cookie带上发送给服务端,服务端内部进行验证。

 

4.2  SESSION

SESSION记录用户的操作行为,它是存储在服务端相对来说比较安全。

以登录为例来说明SESSION的流程:

1、客户端输入账户密码登录成功

2、在服务端会生成SessionID,同时存储在服务端本地,通过响应头中的Set-cookie把生成的SessionID返回给客户端

3、客户端接收到SessionID后

4、客户端再次请求服务端的时候(比如访问个人主页),会在请求头的cookie中带上SessionID发送给服务端

5、服务端接收到客户端发送过来的SessionID,与存储在服务端本地的SessionID之间会进行对比,如果一致,允许访问个人主页,如果不一致,就会重定向到登录的页面。

 

实践理解session

https://i.epwk.com/Home/Employer/index.html

13484545195 asd888/==

1、打开开发者工具后登录此页面

2、登录成功后,捕捉到login,其中的响应头会有一些Set-Cookie(复制出来)

 3、点击个人主页进行查看,打开开发者工具,刷新页面后会有我们访问个人主页的这一请求,会看到Cookie数据(复制出来)

 4、打开记事本工具或者文本对比工具(比较我们的请求Cookie中应该是包含我们登录时的返回的Set-Cookie的内容的)

4.3  TOKEN

TOKEN本质上是SESSION原理来实现的,它的流程与SESSION一样。

TOKEN特点:

1、每次登录成功后,生成的TOKEN都是不一样的

2、返回的TOKEN是一个随机的字符串

 

实例理解:

登录页面成功后会返回一个token:

当访问一个页面时,请求头中带着token请求(Authorization的JWT后):

比对返回的TOKEN和请求中带的TOKEN:

持久化:把某些特定的信息存储下来(临时/永久)

当把图中箭头标的位置clear清除时,会立刻跳转到登录页面(相当于删除了持久化中记录的用户状态)