接口自动化之三 http协议
Posted 唐测试攻城狮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口自动化之三 http协议相关的知识,希望对你有一定的参考价值。
http:
HTTP:超文本传输协议,是用于从WWW服务器传输超文本到本地浏览器的传输协议。HTTP协议是一种无状态协议。
组成
第2-N行:请求headers(如果有Cookie,最后一行为Cookie)
空一行
请求数据(POST等方法使用)
请求
url组成格式
URL编码是一种浏览器用来打包请求参数及表单参数的格式, 参数和参数之间使用&分割,非ASCII码使用%加16进制编码替换
请求方法
1 GET 请求指定的页面信息,并返回实体主体
2POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)数据被包含在请求体中
3 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容
5DELETE 请求服务器删除指定的页面
6 CONNECT 预留给能够将连接改为管道方式的代理服务器
7 OPTIONS 允许客户端查看服务器的性能
8 TRACE 回显服务器收到的请求,主要用于测试或诊断
get请求和post请求区别
GET请求:
GET请求可被缓存
GET请求保留在浏览器历史记录中
GET请求可被收藏为书签
GET请求不应在处理敏感数据时使用
GET请求有长度限制
GET请求只应当用于取回数据
POST请求:
POST请求不会被缓存
POST请求不会保留在浏览器历史记录中
POST不能被收藏为书签
POST请求对数据长度没有要求
不同的参数之间用&隔开,非ASCII码参数会自动url encode
Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html
Accept-Charset 浏览器可以接受的字符编码集。 Accept-Charset: iso-8859-5
Accept-Encoding 指定浏览器可以支持的web服务器返回内容压缩编码类型。 Accept-Encoding: compress, gzip
Accept-Language 浏览器可接受的语言 Accept-Language: en,zh
Cache-Control 指定请求和响应遵循的缓存机制 Cache-Control: no-cache
Connection 表示是否需要持久连接。 (HTTP 1.1默认进行持久连接) Connection: close
Cookie 请求时,把保存在该请求域名下的所有cookie发送给服务器。 Cookie: $Version=1;
Content-Length 请求的内容长度 Content-Length: 348
Content-Type 请求的与实体对应的MIME信息 Content-Type: application/x-www-form-urlencoded
Host 指定请求的服务器的域名和端口号 Host: www.google.com题 10
User-Agent User-Agent的内容包含发出请求的用户信息 User-Agent: Mozilla/5.0 (Linux; X11)
Cache-Control 告诉所有的缓存机制是否可以缓存及哪种类型 Cache-Control: no-cache
application/x-www-form-urlencoded:网页表单格式(默认)
application/json:REST接口常用格式
text/xml:xml格式,RPC接口,Dubbo接口常用格式
test/html:html格式
multipart/form-data: 混合表单,支持上传图片
子主ASCII码: 单字节,美国信息交换标准码, 包含数字,字母,英文标点及一些控制字符题
ISO-8859-1:又称Latin1,单字节,向下兼容ASCII,用于支持部分于欧洲使用的语言
ANSI编码:单字节表示英文,双字节表示汉字,对ASCII的扩展,不同的国家和地区制定了不同的标准,中文中的GBK,GB2312属于ANSI编码
Unicode编码: 采用二个字节编码(英文和中文的字符都以双字节存放),与ANSI码不兼容
UTF-8:是目前互联网上使用最广泛的一种Unicode 编码方式,又称万国码
Base64: 一种用64个字符来表示任意二进制数据的方法。
Base64编码的作用:由于某些系统中只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法。
而且base64特别适合在http,mime协议下快速传输数据。
接口返回的信息,包含HTTP状态码,响应头和相应信息
常见的响应格式有:html,json,xml
http状态码
1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误
200:成功
301/302:请求重定向到另外一个接口
400: 请求语法错误
403:资源没有访问权限
404:资源不存在(有可能是请求url错误或参数不正确)
405:请求方法不被允许(比如接口只允许Post,使用Get请求接口)
500:服务器内部错误(通常是服务器挂了或接口Bug)
502: 网关失效
504: 网关请求超时
HTTP协议传输的数据都是未加密的,HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全。
HTTPS协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
HTTP的连接很简单,是无状态的;HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。
**Cookie/Cookies: **是指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
**Session:**服务端为客户端访问所建立和维持的会话,通常会生成一个唯一的id,会话有一定的有效期。由于HTTP是无状态的,即服务器不知道用户上一次做
了什么,默认也无法识别用户身份。比较流行的做法是:
用户访问时服务端建立会话(Session),后续的访问中,服务器通过辨识,客户端请求时携带的Cookies内容来识别用户cookie是存在客户端(浏览器)的进程内存中和客户端所在的机器硬盘上
cookie只能能够存储少量文本,大概4K大小
cookie是不能在不同浏览器之间共享
Session存在服务器端,存在网站进程的内存中
Session在初次设置session的时候,会在session池中实例化一个session对象,以sessionid 的值作为key,同时会将key以cookie的形式保存到客户端的内存中
Session的作用域只存在当前浏览器的会话中,当浏览器关闭以后就会将sessionid丢失,但是服务器的Session对象要20分钟以后才会回收
授权与加密
Session/Cookie机制:即需要登录,登录后可访问各个接口,最常用的一种策略,适用于内部接口。
固定appid模式:用户注册时会生成一个唯一的appid,用户调用接口时需要携带appid,适用于公开接口,安全性较差。
动态token模式:token即身份令牌,用户访问接口需要使用个人appid临时申请一个token,token有一定有效期,适用于公开接口,安全性较appid模式好。
数字签名:将所有请求参数及参数值进行排列拼接,加上用户私钥,再进行Md5或其他加密生成一个请求的签名(sign),请求是需要携带签名,服务器收到请求
后,会对请求重新计算签名并核实与请求所携带签名是否一致。安全性较高,可以有效防止请求被篡改。适用于内部接口及微服务接口。常见的加密算法 在接口
数据传输过程中常对一些敏感数据(如密码)进行Base64编码或MD5加密,以增加安全性。加密算法分为对称式加密算法和非对称式加密算法,对称式加解密使
用同一个秘钥,非对称式使用不同的秘钥。对称式加密
DES: 数据加密标准,速度较快,适用于加密大量数据的场合
AES: 高级加密标准,速度快,安全级别高
非对称式加密
RSA: 是一个支持变长密钥的公共密钥算法, 分公钥和私钥,SSH协议使用该算法
MD5: 最常用的一种加密方法,是一种摘要算法。
HTTP 缓存机制作是 web 性能优化的重要手段,当用户第一次请求服务器资源时,服务器将资源缓存到客户端本地,在一定时间内(缓存有效期内)当用户再次向服务器
请求同样的资源时,可以直接从缓存中读取,而不用从服务器下载。接口测试中缓存相关注意点
在更新或调试接口是,注意是否需要清理缓存(或临时禁用缓存)
缓存有一定的有效期
接口性能测试中会关注缓存的命中率
请求参数
请求header(常见header)
请求数据类型
数据编码
响应
常见http相应码
http与https
cookie和session
cookie和seesion的区别
常见的接口安全策略:
4. 开放协议:Basic Auth/ Oauth1.0 / Oauth2.0: 适用于开放接口。
缓存
94年的我们,2015年的我们,还在大学里读着大三,那时候的我们准备着各奔东西的事,我们比任何人都向往着2020年的到来,我们约好2020年,那年刚满26岁的我们,在5月20号一起去注册领证,哪怕当时的我们还孤身一人。
然而现实的2020年,艰难开局,没有人能置身事外。面对2020年的许多困境,我们在数不清的声嘶力竭之后,仍然要被迫退回原点。但大部分人,依然在奋勇向前,赌一次翻盘的机会。
以上是关于接口自动化之三 http协议的主要内容,如果未能解决你的问题,请参考以下文章