关于http/https协议
一、定义
http协议,即超文本传输协议(Hypertext Transfer Protocol)。
https协议,基于http协议,主要由两部分组成http + SSL_TLS。比http协议安全,能提高传输过程安全性。
二、http协议与其他网络层
tcp/ip五层网络模型(如图1)中,http协议位于应用层。http协议确定了服务器与客户端之间数据交换的方法及内容格式。
(图1)
http协议是基于tcp协议的,就是说http请求要能成功被双方接收或响应,必须先成功建立tcp连接。在成功建立tcp连接后,http数据报文才能在客户端和服务器之间传输。
三、http协议报文结构
客户端与服务端之间通过交换http报文实现数据和信息交换,http请求报文与响应报文都有固定格式。接口自动化测试通过工具或代码构造http请求报文,以获得响应报文,通过分析响应报文,以判断测试是否通过。
3.1 请求报文
http请求报文格式(如图2):
(图2)
(1)请求行:方法、URL(统一资源定位符)、HTTP版本
(2)请求首部(请求头):一系列“健”-“值”对。
(3)请求实体(请求体):请求内容
下面,对请求行、请求头、请求体中对接口自动化测试比较关键的部分进行分析。
1、请求行
~ http方法
类似SQL语言增删改查操作数据,http协议有操作服务器数据的方法。
1.1. get方法,查询数据
1.2 post方法,提交数据
面向公众开放的软件中,一般只提供get和post方法。
1.3 put方法,更新数据
1.4 delete方法, 删除数据
还有其他的不常用方法,此处省略。
~ http版本
目前市面上大部分应用的是http1.1
2、请求头
由一系列健-值对组成。其中比较重要的有:
User-Agent:发送请求客户端软硬件版本信息
Content-Type:说明请求正文格式
Cookie:缓存信息,如用户身份认证信息,也存放在cookie中
Referer: 指明从哪一个请求切换进入本请求,常用于反爬虫
Host: 主机名
3、请求体:
一般包含服务器要求的参数信息
3.2 响应报文
响应报文格式如图(图3)所示:
(图3)
(1)状态行(响应行)
(2)响应首部(响应头)
(3)响应实体(响应体)
~ 响应行:
响应行,声明了http版本、响应状态码、短语。
1.1 响应状态码
1XX : 收到请求,需要请求者继续操作,不常用
2XX : 请求成功。常用的如200、201
3XX : 重定向。 常用如301永久跳转、302临时跳转
4XX : 请求出错,提示请求信息有误。常用400请求出错如语法协议,403无权限访问、404访问数据不存在,405不支持的方法
5XX : 服务器出错。常用如500服务器内部错误、503服务器宕机。
1.2 短语。 对请求结果进行简要描述
~ 响应头
一系列 “键”-“值”对。常用有:
Content-Type : 响应正文的MIME格式
Expires : 缓存过期时间
Cache-control : 功能类似Expires,说明缓存过期时间
Server : 服务器名称
~ 响应体
返回的数据正文。
常见格式Content-Type包括:
text/html html格式
text/plain 纯文本格式
text/xml xml格式
image/gif gif图片
image/jpeg jpeg图片
image/png png图片
application/json json格式
application/pdf pdf格式
application/octet-stream 二进制流形式
application/x-www-form-urlencoded form表单默认提交格式,会转换为key-value格式
multipary/form-data 表单上需要上传文件的格式