目录
介绍
HTTP状态码
HTTP报文
请求方法
HTTP版本
HTTP标头
通用标头
请求标头
响应标头
get 编码
post 编码
RESTful风格
HTTPS
绝大多数的Web服务接口都是基于HTTP协议进行通信的,包括RESTful API和SOAP等。了解HTTP协议可以帮助测试人员理解接口的请求和响应格式,从而更好地进行接口测试
介绍
HTTP 协议(超文本传输协议)是服务端传送超文本到前端的传输协议,传送的数据一般包括 HTML 文件、图片、文字等。HTTP 协议工作在前端到服务端的架构上,App 端或者 Web 浏览器端通过 URL 或者接口向服务端发送请求,服务端接收到前端的请求后,向前端发送响应信息
HTTP状态码
- 1xx(信息提示):服务器接收到请求并正在处理。
-
- 100 Continue:客户端可以继续发送请求。
- 101 Switching Protocols:服务器正在切换协议。
- 2xx(成功):请求被成功接收、理解和处理。
-
- 200 OK:请求成功,服务器返回所请求的资源。
- 201 Created:请求已成功处理,并创建了新的资源。
- 204 No Content:服务器成功处理请求,但没有返回任何内容。
- 3xx(重定向):需要进一步操作以完成请求。
-
- 301 Moved Permanently:所请求的资源已永久移动到新位置。
- 302 Found:所请求的资源暂时移动到新位置。
- 304 Not Modified:客户端缓存的资源是最新的,无需重新下载。
- 303:永久重定向
- 4xx(客户端错误):请求包含语法错误或无法完成请求。
-
- 400 Bad Request:请求无效,服务器无法理解。
- 401 Unauthorized:请求未经授权。
- 403 Forbidden:服务器拒绝请求访问。
- 404 Not Found:所请求的资源不存在。
- 5xx(服务器错误):服务器在处理请求时发生错误。
-
- 500 Internal Server Error:服务器内部错误。
- 502 Bad Gateway:服务器作为网关或代理,从上游服务器接收到无效响应。
- 503 Service Unavailable:服务器暂时无法处理请求
401和403的区别?
401状态码表示客户端请求需要进行身份验证,而此时客户端未提供凭据或提供的凭据不正确,客户端需要重新进行身份验证。
403状态码表示客户端请求被禁止,服务端明确告知客户端这个请求是不被允许的,客户端无需重新进行身份验证。
要想解决401状态码问题,需要首先确认账号密码是否正确,其次检查服务端身份验证的代码是否能够正确调用。如果服务端没有进行身份验证,需要根据业务规则对接口进行修改,让其进行身份验证。
要想解决403状态码问题,需要先确认客户端访问的资源是否有权限访问,如果没有权限,需要根据业务规则修改接口权限配置。
HTTP报文
HTTP协议主要由三大部分组成:
- 起始行:由方法、URL字段和HTTP版本字段组成
- 头部字段
- 正文消息
(起始行和头部字段,合并称为请求头或响应头)
请求方法
- GET:从服务器获取资源。该请求方法不应该对服务器上的资源做任何修改,只允许读取数据。
- POST:向服务器添加新的资源。该请求方法对服务器上的资源做出修改,并在服务器上创建新资源。
- PUT:向服务器更新某个资源。该请求方法对特定资源进行完全替换,如果没有找到该资源,则创建一个新的。
- DELETE:从服务器删除指定资源。
- HEAD:与GET类似,但仅返回响应头部信息,不返回响应正文(用于获取资源的元信息)。
- OPTIONS:获取Web服务器所支持的HTTP请求方法列表。
- CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
- TRACE:回显服务器收到的请求,用于测试或诊断。
HTTP版本
- HTTP1.0
- HTTP1.1
- HTTP2.0
HTTP标头
通用标头
请求标头
Accept:告知客户端能够接收的MIME类型是什么
Accept-Charset:客户端能够接受的字符编码
Accept-Encoding:客户端希望服务端返回的内容编码
Accept-Language:客户端希望服务端返回的语言类型
Authorization:请求头用于向服务器认证用户代理的凭据,通常用在服务器以401未经授权状态和WWW-Authenticate标头响应之后,啥意思呢? 你不明白的话我画张图给你看
Host:指明了服务器的域名
User-Agent:将创建请求的浏览器和用户代理名称等信息传达给服务器;Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0
响应标头
get 编码
application/x-www-form-urlencoding
post 编码
1、application/x-www-form-urlencoded (默认)
1、multipart/form-data (上传文件)
2、application/json (用来告诉服务端消息主体是序列化后的 JSON 字符串)
3、text/xml:是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范。 XML 结构还是过于臃肿,一般场景用 JSON 会更灵活方便。
RESTful风格
RESTful风格是一种基于HTTP协议的Web服务架构,它使用HTTP的GET、POST、PUT、DELETE等方法来实现对资源的操作。它强调利用URI(统一资源标识符)来唯一地标识资源,通过HTTP报文中的动词和请求头来操作资源,而不是通过某些特定的RPC(远程过程调用)机制进行通信。RESTful架构通常采用JSON或XML格式作为数据传输格式。
在RESTful架构中,资源的状态可以使用HTTP状态码进行表示,如200表示请求成功,404表示未找到资源等。同时,RESTful还要求服务端无状态化,即服务端不记录用户状态信息,每次请求都包含足够的信息来描述请求。
使用RESTful架构,可以使得Web应用程序更加简单、高效、可伸缩、易于维护。目前,RESTful已经成为很多互联网公司API设计的首选。
HTTPS
HTTPS为了解决HTTP明文传输,也没有用户验证,以及未验证报文完整性的问题
HTTPS 的全称是 Hypertext Transfer Protocol Secure ,它用来在计算机网络上的两个端系统之间进行 安全的交换信息(secure communication) ,它相当于在 HTTP 的基础上加了一个 Secure安全 的词眼,那么我们可以给出一个 HTTPS 的定义: HTTPS 是一个在计算机世界里专门在两点之间安全的传输文字、图片、音频、视频等超文本数据的约定和规范。 HTTPS 是 HTTP 协议的一种扩展它本身并不保传输的证安全性,那么谁来保证安全性呢? 在 HTTPS 中,使用 传输层安全性(TLS)或安全套接字层(SSL) 对通信协议进行加密。也就是 HTTP + SSL(TLS) = HTTPS。
HTTPS 协议提供了三个关键的指标
- 加密(Encryption), HTTPS 通过对数据加密来使其免受窃听者对数据的监听,这就意味着当用户在浏览网站时,没有人能够监听他和网站之间的信息交换,或者跟踪用户的活动,访问记录等,从而窃取用户信息。
- 数据一致性(Data integrity),数据在传输的过程中不会被窃听者所修改,用户发送的数据会完整 的传输到服务端,保证用户发的是什么,服务器接收的就是什么。
- 身份认证(Authentication) ,是指确认对方的真实身份,也就是 证明你是你 (可以比作人脸识别)它可以防止中间人攻击并建立用户信任
SSL/TLS
SSL:安全套接字层,位于OSI七层网络模型中的第五层。后面更名为TLS
TLS,用于两个通信程序之间提供保密性和数据完整性
HTTPS并不是一项新的应用层协议,只是HTTP通信接口部分由SSL和TLS替代而已。通常情况下,HTTP会先和直接和TCP进行通信。在使用SSL的HTTPS后,则先和SSL通信,接着再由SSL和TCP进行通信。也就是HTTPS是身披一层SSL的HHTP