【接口测试】HTTP协议

一、HTTP 协议基础

HTTP 简介

HTTP 是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通常是由客户端发起一个请求,创建一个到服务器的 TCP 连接,当服务器监听到客户端的请求时,便会向客户端返回一个状态和内容。如下图所示,便是客户端发起请求,服务端响应的一个简单过程。

HTTP 工作原理 

HTTP工作原理主要涉及客户端和服务器之间的交互。

  1. 当我们在浏览器中输入网址并回车后,浏览器会向服务器发送一个HTTP请求。这个请求由多个部分组成,包括请求行、头部和正文。请求行包含请求方法、请求URI和HTTP版本号,如GET、POST、PUT、DELETE等。请求URI指定了要访问的资源的位置。HTTP版本号表示请求所使用的HTTP协议版本。头部包含了一系列的键值对,用于向服务器传递一些请求信息。例如,Accept表示客户端可以接受的响应内容类型,User-Agent表示客户端的浏览器信息,Referer表示客户端从哪个页面跳转而来等等。正文是可选的,用于向服务器传递一些数据。例如,当客户端向服务器提交表单时,表单数据就可以放在请求的正文中。
  2. 服务器接收到请求消息后,根据请求消息的URL和相应的处理逻辑,生成服务器响应消息,并将其发送给客户端。响应消息中包含协议版本、状态码、响应头和响应体等信息。状态行包含HTTP版本号、状态码和状态短语。HTTP版本号表示响应所使用的HTTP协议版本。状态码是一个三位数字,用于表示服务器对请求的处理结果,如200表示成功、404表示未找到资源、500表示服务器内部错误等等。状态短语是对状态码的简短描述,例如200对应的状态短语是OK,404对应的状词短语是Not Found。头部包含了一系列的键值对,用于向客户端传递一些响应信息。例如,Content-Type表示响应内容的类型,Content-Length表示响应内容的长度,Set-Cookie表示服务器要求客户端保存一个Cookie等等。正文是响应的实际内容。例如,当客户端请求一个网页时,网页的HTML代码就可以放在响应的正文中。
HTTP 特点 

  1. 支持客户/服务器模式:HTTP协议支持客户/服务器模式,客户端向服务器发起请求并接收响应。
  2. 简单快速:HTTP协议简单且快速,客户端向服务器发送请求时只需传送请求方法和路径,响应也较为迅速。
  3. 灵活:HTTP允许传输任意类型的数据对象,具有灵活性,这意味着它不仅可以传输文本,还可以传输图片、音频、视频等非文本数据。
  4. 无连接:HTTP协议无连接,即限制每次连接只处理一个请求。服务器处理完客户的请求并收到客户端的应答后,即断开连接,以节省资源。
  5. 无状态:HTTP协议无状态,每个请求都是独立的,这意味着服务器不会保存之前和现在的请求和响应之间的关联。
HTTP 和 HTTPS

上面介绍 HTTP 的工作原理和特点,看起来是一个很不错的协议,但是 HTTP 也存在许多不足,特别是在安全方面。HTTP 通信使用明文传输,并且在通信中是不验证通信方的身份,也无法证明报文是完整的,因此使用 HTTP 通信有可能使内容被窃听,通信方身份被伪装,报文遭篡改。

HTTP 协议中是没有加密机制,但是可以和 SSL(Secure Socket Layer )或 TLS(Transport Layer Security)组合使用,从而加密 HTTP 的通信内容。即出现了 HTTPS。HTTPS 中的 S 可以理解为是 Secure,是以安全为目标的 HTTP 通道。大家可以这样理解 HTTPS = HTTP + 加密 + 认证 + 完整性保护。

细心的同学应该会发现,在一些大型网站,特别是银行、支付等网站使用的都是 HTTPS,因为它更安全。

二、HTTP 协议介绍

1.URL

URL:是互联网上标准资源的地址,一般称为统一资源定位符。
组成: 协议 :// hostname[:port] / path / [? 查询参数1 & 查询参数2]

如:

2. HTTP协议

HTTP:超文本传输协议,基于请求与响应的应用层协议。
作用:规定了客户端与服务器之间信息传递规范,是二者共同遵守的协议。
组成:
  • HTTP请求:定义请求数据格式      请求、请求、请求
  •  HTTP响应:定义响应数据格式     状态、响应、响应

我们以瑞吉外卖项目为例,在登录界面发送了一个请求,按住F12进行调试:

1.请求行

位置:请求数据 第一行
作用:说明 请求方法 访问的资源 、协议版本

请求行分为三个部分:请求方法、请求地址 URL 和 HTTP 协议版本,它们之间用空格分割。例如下图中的:POST /employee/login HTTP/1.1。

 

请求方法

HTTP/1.1 中定义的请求方法有 8 种,分别是 GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE。GET 和 POST 是最常见的两种请求方法。如果是 RESTFul 接口则是 GET、POST、DELETE、PUT。

GET:从服务器获取资源
POST:在服务器新建一个资源
PUT:在服务器更新资源
DELETE: 从服务器删除资源

协议版本

协议版本的格式为:协议名称/主版本号.次版本号,常见的有 HTTP/1.0 和 HTTP/1.1。

2.请求头

位置:请求数据第二行到空白行之间

作用:通知服务器客户端请求信息

特点:请求头部由 键值对 组成,每行一对
Content-Type:请求体数据类型
  • text/html:HTML格式
  • image/jpeg:jpg图片格式
  • application/json:JSON数据格式
  • application/x-www-form-urlencoded: 表单默认的提交数据格式
  • multipart/form-data:在表单中进行文件上传时使用

3.请求体

 

4.状态行 

位置:响应数据 第一行
作用:描述服务器处理结果
内容: 状态行由协议版本号、 状态码 、状态消息组成

 

状态行

状态行分为三个部分:HTTP 协议版本、状态码和状态码描述,它们之间用空格分割。例如 HTTP/1.1 200 OK

  • HTTP 协议版本:与请求行中的协议版本一致,格式为:协议名称/主版本号.次版本号,常见的有 HTTP/1.0 和 HTTP/1.1。
  • 状态码:表示网页服务器超文本传输协议响应状态的 3 位数字代码。第一个数字代表当前响应的类型。例如 1xx 表示请求已经被服务器接收,需要继续处理。
  • 状态码描述:也叫状态描述,是对状态码的一个说明。
HTTP 常见响应码

我们经常会听到开发人员说,200、404、500 等数字,其实说的就是状态码。

HTTP 状态码(HTTP Status Code)由三个十进制的数字组成。状态码的第一个数字定义了状态码的类别,HTTP 状态码总共有五种类别,如下所示:

  • 1xx:信息。表示服务器接收到请求,需要继续处理。
  • 2xx:成功。请求已经被成功接收并处理。
  • 3xx:重定向。需要客户端采取进一步操作才能完成请求。
  • 4xx:客户端错误。客户端发送的请求有语法错误或者请求无法实现。
  • 5xx:服务端错误。服务器在处理请求的过程中发生了错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。

下面列举出一些常见的状态码:

状态码英文名描述
100Continue客户端应当继续发送请求
101Switching Protocols服务器根据客户端的请求切换协议
200OK请求成功。请求所希望的响应头或数据体将随此响应返回
203Accepted服务器已经接受请求,但未处理完成
204No Content服务器成功处理,但未返回内容
301Moved Permanently请求的资源已被永久的移动到新 URI,浏览器会自动定向到新 URI
305Use Proxy被请求的资源必须通过代理才能被访问
400Bad Request客户端请求的语法错误,服务器无法理解
401Unauthorized请求要求用户的身份认证
403Forbidden服务器理解请求,但是拒绝执行此请求
404Not Found请求失败,服务器上无法找到请求的资源
500Internal Server Error服务器内部错误,无法完成请求
503Service Unavailable由于超载或系统维护,服务器暂时无法处理客户端的请求
505HTTP Version not supported服务器不支持,或者拒绝支持请求中使用的 HTTP 协议的版本

 

 5.响应头

响应头部用来说明客户端需要使用的一些附加信息。与请求头部类似,包含若干个属性,每行一对,传递着固定的信息。格式为:属性名:属性值。下面列举一些响应头部内容。

响应头说明示例
Server服务器应用程序软件的名称和版本Server: Tengine
Date此消息被发送时的日期和时间Date: Tue, 15 Jun 2021 11:28:29 GMT
Content-Type当前文档的 MIME 类型Content-Type: text/html; charset=utf-8
Content-Encoding当前文档使用的编码方式Content-Encoding: br
Expires超过该时间则认为文档已经过期Expires: Fri, 01 Jan 1990 00:00:00 GMT

6.响应体

作用:服务器返回的数据实体

特点: 有图片、json、xml、html等多种类型

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/120717.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机搜狗输入法,输入拼音时如何分割拼音,调出“分词“功能,如何微信或QQ使用发送按钮而不是换行?

背景 有时候打字,输入 “xian” 的时候我们的意图是 “xi’an” (西安),或者输入 “yue” 的时候希望是 “yu’e”(余额) 如何输入这个分隔符 ’ 呢? 设置方法 默认页面如图 希望设置成 点…

2023年【起重信号司索工(建筑特殊工种)】考试总结及起重信号司索工(建筑特殊工种)模拟考试题

题库来源:安全生产模拟考试一点通公众号小程序 起重信号司索工(建筑特殊工种)考试总结是安全生产模拟考试一点通生成的,起重信号司索工(建筑特殊工种)证模拟考试题库是根据起重信号司索工(建筑特殊工种)最新版教材汇编出起重信号司索工(建筑特殊工种)仿…

计算机网络 实验二 交换机的基本配置

实验二 交换机的基本配置 实验目的 • 掌握交换机的配置方式及切换命令; • 掌握交换机端口的基本配置; • 掌握交换机mac地址的查看与管理方法。 实验设备 以太网交换机一台服务器一台PC机五台配置电缆、网线若干 网络拓扑及IP地址分配 给计算…

腾讯云16核CPU服务器配置大全,CVM和轻量服务器

腾讯云16核CPU服务器有哪些配置可以选择?可以选择标准型S6、标准型SA3、计算型C6或标准型S5等,目前标准型S5云服务器有优惠活动,性价比高,计算型C6云服务器16核性能更高,轻量16核32G28M带宽优惠价3468元15个月&#xf…

OpenCV 实现 SIFT→SURF 算法关键点检测实现

目录 1,SIFT算法原理 1.1,基本流程 1.1.1 尺度空间极值检测 1.1.2 关键点定位 1.1.3 关键点方向确定 1.1.4 关键点描述 1.1.5 总结 1.2 SURF原理 2 代码实现 3 结果展示 4,你肯定会遇到报错 cv2.error: OpenCV(3.4.8) C…

Python相关知识点

读取zip文件 import zipfilelistAipInfo zipfile.ZipFile(xxx.zip, r) print(listZipInfo.namelist()) # 以列表列出所有压缩文件列出所有被压缩的文件,以及文件名、文件大小和压缩结果大小。 for info in listZipInfo.infolist():print(info.filename, info.…

Android widget 小部件使用指南强化版

Android widget 小部件使用指南强化版 一、简单UI的小部件二、含集合的小部件三、可配置的小部件四、可控制的小部件五、Android 12 Widget 更新 小部件是主屏幕定制的一个重要方面。您可以将它们视为应用程序最重要的数据和功能的“概览”视图,这些数据和功能可以直…

【Java 进阶篇】MySQL多表查询:内连接详解

MySQL是一种强大的关系型数据库管理系统,允许您在多个表之间执行复杂的查询操作。本文将重点介绍MySQL中的多表查询中的一种重要类型:内连接(INNER JOIN)。内连接用于检索满足两个或多个表之间关联条件的行,它能够帮助…

102.二叉树的层序遍历

目录 一、题目 二、代码 一、题目 102. 二叉树的层序遍历 - 力扣(LeetCode) 二、代码 主要应用到了两个队列,一个队列存放数据,一个队列存放对应所在的第几层 /*** Definition for a binary tree node.* struct TreeNode {* …

Uniapp实现APP云打包

一. 基础配置 二. APP图标配置 1. 点击浏览 选取图标(注:图片格式为png) 2. 点击自动生成所有图标并替换 三. 点击发行 并选择云打包 四. 去开发者中心获取证书 我这里是已经获取好的,没有获取的话,按照提示获取即可,非常简单…

《YOLOv5:从入门到实战》报错解决 专栏答疑

前言:Hello大家好,我是小哥谈。《YOLOv5:从入门到实战》专栏上线后,部分同学在学习过程中提出了一些问题,笔者相信这些问题其他同学也有可能遇到。为了让大家可以更好地学习本专栏内容,笔者特意推出了该篇专…

IDEA Debug技巧大全,看完就能提升工作效率

作者简介 目录 1.行断点 2.方法断点 3.异常断点 4.字段断点 5.条件表达式 1.行断点 行断点就是平时我们在代码行旁边单击鼠标打上的断点,这个没有什么好说的。关键点在于很多人不知道的,行断点其实是可以右击选择是对改行的全部调用都生效&#xf…