【接口测试】HTTP协议

news2024/11/25 12:53:58

一、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.coloradmin.cn/o/1050636.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java 进阶篇】MySQL数据库范式详解

范式是数据库设计中的一种理论方法,旨在通过减少数据冗余来提高数据存储的有效性和完整性。在MySQL数据库中,范式设计是一个重要的概念,它有助于组织和管理数据,确保数据的一致性和可靠性。本文将深入探讨数据库范式,包…

必备基础算法

目录 一、双指针 双指针与链表双指针与链表 二、前缀和 一维二维 三、差分 一维二维 四、深度搜索,dfs dfs数组排列dfs岛屿问题dfs染色法(二分图判定)dfs路径规划dfs拓扑排序 五、广度搜索,bfs bfs最优路径规划bfsdijkstra 六、单…

Python与数据分析--Pandas操作进阶

目录 1.文件读取方式 1.1.绝对路径读取文件 1.2.相对路径读取文件 2.列表数据操作 2.1.列索引指定 2.2.代码数据对齐 3.创建新CSV文件 4.缺失值处理 4.1.缺失值创建 4.2.缺失值检索 4.3.缺失值查询 4.3.1.isnull()函数判断 4.3.2.notnull()函数判断 4.3.3.any()函数…

数据集笔记:2015上海地铁一卡通数据

数据地址:上海地铁数据_免费高速下载|百度网盘-分享无限制 (baidu.com) 数据介绍 上海2015年几天的地铁一卡通出入站信息 卡号、交易日期、交易时间、公交线路/地铁站点中文名称、行业名称(公交、地铁、出租、轮渡、PR停车场)、交易金额、交易性质(非优惠、优惠、…

3种Renko图表形态FPmarkets3秒轻松判断价格走势

Renko图表形态在交易中的应用并不逊色于其他技术分析方法。相较于普通的烛台图表,使用Renko图表时,有些经典模式更容易被发现和识别,FPmarkets总结这些模式包括: 首先是头和肩膀形态。这是一种价格反转形态,由两个较小…

【软件测试】软件缺陷报告如何编写

废话不多说,三张图说明 软件缺陷报告如何编写 以及 报告的跟踪流程 软件缺陷报告格式 软件缺陷报告内容说明 缺陷状态 - 分为 新建、打开、修复、关闭 - 新建 - 测试人员第一次发现缺陷 - 打开 - 测试将报告交给开发,开发确认缺陷,准备动手…

threejs中模型自定义路线移动

threejs中模型自定义路线移动 生命不息,学习不止 基于r95Threejs版本 此例子中:包括背景设置:天空之盒。 模型的引用:小车和整体 glb模型引用 路线设置(因线line2无法设置宽度,所以选择了用管道,当然也可用点成面&…

MySQL 索引介绍和最佳实践

目录 一、前言二、索引类型1.1 主键索引(PRIMARY KEY)1.2 唯一索引(UNIQUE)1.3 普通索引(NORMAL)1.3.1 单列普通索引1.3.2 单列前缀普通索引1.3.3 多列普通索引1.3.4 多列前缀普通索引 1.4 空间索引&#x…

商场做小程序商城的作用是什么?

商场是众多商家聚集在一起的购物公共场所,大商场也往往入驻着众多行业商家,是每个城市重要的组成部分。 随着互联网电商深入及客户消费行为改变,不少商场如今的客流量非常有限,甚至可以说是员工比客人多,这就导致撤店…

三相Vienna整流器电流畸变的抑制方法

该博客参考丁文龙的博士论文《低成本充电系统高性能多端口Vienna整流器关键控制策略研究》,他的博士论文深入浅出,分析透彻。感谢师妹Miss Young提供的技术指导,她是一位优秀的电力电子工程师,祝她事业顺利,身体健康。…

【教学类-06-06】20230905数字题目随便玩( 加减法、分合、比大小,纸张消耗)

背景需求: 3年前第一次设计加减法题目时,打印了一大堆加减法、数字分合、比大小的纸张。太多了,以至于三年后整理素材库,发现还有很多这样的纸片。这些20以内、50以内的题目难度大、题量多,完全不适合幼儿园孩子做&am…

Linux基础命令汇总

用户管理 su 切换用户:su 用户名 logname 显示当前用户的登录用户名:logname useradd 创建用户:useradd 用户名创建用户时指定用户的主组:useradd -g 组名 用户名 usermod 添加附属组:usermod -G 组…

基于 Python+DenseNet121 算法模型实现一个图像分类识别系统

项目展示 一、介绍 DenseNet(Densely Connected Convolutional Networks)是一种卷积神经网络(CNN)架构,2017年由Gao Huang等人提出。该网络的核心思想是密集连接,即每一层都接收其前面所有层的输出作为输…

CISSP学习笔记:安全脆弱性、威胁和对策

第九章 安全脆弱性、威胁和对策 9.1 评估和缓解安全脆弱性 9.1 硬件 处理器执行类型 多任务处理: 同时处理两个或更多任务多处理: 利用多个处理器完成一个应用程序的处理能力多程序设计:通过操作系统对单个处理器上的两个任务进行协调&…

AHH HackerHouse @Move大理站完美谢幕

Antalpha HackerHouse Move 大理站于2023年9月23日在面包树举办了Final DemoDay,这也代表着为期21天的 HackerHouse 活动完美谢幕。 自从9月3日开始,整整21天的共居时间里,我们从个体逐渐融汇成小团队,最终成为了一个紧密团结的大…

新手教程,蛋糕小程序的搭建流程一网打尽

作为一名新手,想要搭建一个蛋糕小程序可能会觉得有些困惑。但是,不用担心!今天我将为大家详细介绍蛋糕小程序的搭建流程,并带大家一步步完成。 首先,我们需要登录乔拓云网的后台。在登录成功后,点击进入商城…

OCI 发布了容器运行时和镜像规范!

7 月 19 日是开放容器计划Open Container Initiative(OCI)的一个重要里程碑,OCI 发布了容器运行时和镜像规范的 1.0 版本,而 Docker 在这过去两年中一直充当着推动和引领的核心角色。 我们的目标是为社区、客户以及更广泛的容器行…

医疗小程序开发:技术门槛高?

随着移动互联网的普及,医疗行业也逐渐转向线上。医疗小程序开发成为了很多企业和医疗机构关注的焦点。但是,对于一些技术小白来说,可能会觉得医疗小程序开发技术门槛高,无从下手。实际上,使用乔拓云平台进入后台&#…

《Python趣味工具》——ppt的操作(刷题版)

前面我们对PPT进行了一定的操作,并将其中的文字提取到了word文档中。现在就让我们来刷几道题巩固巩固吧! 文章目录 1. 查看PPT(上)2. 查看PPT(中)3. 查看PPT(下)4. PPT的页码5. 大学…

KUKA机器人通过3点法设置工作台基坐标系的具体方法

KUKA机器人通过3点法设置工作台基坐标系的具体方法 具体方法和步骤可参考以下内容: 进入主菜单界面,依次选择“投入运行”—“测量”—基坐标,选择“3点法”, 在系统弹出的基坐标编辑界面,给基座标编号为3,命名为table1,然后单击“继续”按钮,进行下一步操作, 在弹出的…