【接口测试】HTTP协议
一、HTTP 协议基础
HTTP 简介
HTTP 是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通常是由客户端发起一个请求,创建一个到服务器的 TCP 连接,当服务器监听到客户端的请求时,便会向客户端返回一个状态和内容。如下图所示,便是客户端发起请求,服务端响应的一个简单过程。
HTTP 工作原理
HTTP工作原理主要涉及客户端和服务器之间的交互。
- 当我们在浏览器中输入网址并回车后,浏览器会向服务器发送一个HTTP请求。这个请求由多个部分组成,包括请求行、头部和正文。请求行包含请求方法、请求URI和HTTP版本号,如GET、POST、PUT、DELETE等。请求URI指定了要访问的资源的位置。HTTP版本号表示请求所使用的HTTP协议版本。头部包含了一系列的键值对,用于向服务器传递一些请求信息。例如,Accept表示客户端可以接受的响应内容类型,User-Agent表示客户端的浏览器信息,Referer表示客户端从哪个页面跳转而来等等。正文是可选的,用于向服务器传递一些数据。例如,当客户端向服务器提交表单时,表单数据就可以放在请求的正文中。
- 服务器接收到请求消息后,根据请求消息的URL和相应的处理逻辑,生成服务器响应消息,并将其发送给客户端。响应消息中包含协议版本、状态码、响应头和响应体等信息。状态行包含HTTP版本号、状态码和状态短语。HTTP版本号表示响应所使用的HTTP协议版本。状态码是一个三位数字,用于表示服务器对请求的处理结果,如200表示成功、404表示未找到资源、500表示服务器内部错误等等。状态短语是对状态码的简短描述,例如200对应的状态短语是OK,404对应的状词短语是Not Found。头部包含了一系列的键值对,用于向客户端传递一些响应信息。例如,Content-Type表示响应内容的类型,Content-Length表示响应内容的长度,Set-Cookie表示服务器要求客户端保存一个Cookie等等。正文是响应的实际内容。例如,当客户端请求一个网页时,网页的HTML代码就可以放在响应的正文中。
HTTP 特点
- 支持客户/服务器模式:HTTP协议支持客户/服务器模式,客户端向服务器发起请求并接收响应。
- 简单快速:HTTP协议简单且快速,客户端向服务器发送请求时只需传送请求方法和路径,响应也较为迅速。
- 灵活:HTTP允许传输任意类型的数据对象,具有灵活性,这意味着它不仅可以传输文本,还可以传输图片、音频、视频等非文本数据。
- 无连接:HTTP协议无连接,即限制每次连接只处理一个请求。服务器处理完客户的请求并收到客户端的应答后,即断开连接,以节省资源。
- 无状态: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
如:
2. 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。
协议版本
协议版本的格式为:协议名称/主版本号.次版本号,常见的有 HTTP/1.0 和 HTTP/1.1。
2.请求头
位置:请求数据第二行到空白行之间
作用:通知服务器客户端请求信息

- 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:服务端错误。服务器在处理请求的过程中发生了错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。
下面列举出一些常见的状态码:
状态码 | 英文名 | 描述 |
---|---|---|
100 | Continue | 客户端应当继续发送请求 |
101 | Switching Protocols | 服务器根据客户端的请求切换协议 |
200 | OK | 请求成功。请求所希望的响应头或数据体将随此响应返回 |
203 | Accepted | 服务器已经接受请求,但未处理完成 |
204 | No Content | 服务器成功处理,但未返回内容 |
301 | Moved Permanently | 请求的资源已被永久的移动到新 URI,浏览器会自动定向到新 URI |
305 | Use Proxy | 被请求的资源必须通过代理才能被访问 |
400 | Bad Request | 客户端请求的语法错误,服务器无法理解 |
401 | Unauthorized | 请求要求用户的身份认证 |
403 | Forbidden | 服务器理解请求,但是拒绝执行此请求 |
404 | Not Found | 请求失败,服务器上无法找到请求的资源 |
500 | Internal Server Error | 服务器内部错误,无法完成请求 |
503 | Service Unavailable | 由于超载或系统维护,服务器暂时无法处理客户端的请求 |
505 | HTTP 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.响应体
作用:服务器返回的数据实体
相关文章:

【接口测试】HTTP协议
一、HTTP 协议基础 HTTP 简介 HTTP 是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通常是由客户端发起一个请求,创建一个到服务器的 TCP 连接,当服务器监听到客户…...

【重新定义matlab强大系列十四】基于问题求解有/无约束非线性优化
🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好🤗ᾑ…...

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…...
区块链(7):p2p去中心化之初始化websoket服务端
1 整个流程梳理 服务开启onStart()连接打开onOpen()处理接收到的消息onMesage()连接关闭onClose()异常处理onError()2 创建p2p实现类 package com.example.demo.service;import com.example.demo.entity.BlockChain; import org.java_websocket.WebSocket; import org.java_we…...

原型、原型链、判断数据类型
目录 作用 原型链 引用类型:__proto__(隐式原型)属性,属性值是对象函数:prototype(原型)属性,属性值是对象 Function:本身也是函数 相关方法 person.prototype.isPrototypeOf(stu) Object.getPrototypeOf(objec…...

pycharm中配置torch
在控制台cmd中安装好torch后,在pycharm中使用torch,需要进行简单设置即可。 在pycharm中新建一个工程,在file文件中打开setting 在setting中找到project interpreter编译器 找到conda environment的环境配置,设置好相应的目录 新…...

什么是Times New Roman 字体
如何评价 Times New Roman 字体?:https://www.zhihu.com/question/24614549?sortcreated 新罗马字体是Times New Roman字体,是Office Word默认自带的英文字体之一。 中英文字体 写作中,英文和数字的标准字体为 Times New Roma…...

企业会议新闻稿怎么写?会议类新闻稿如何撰写?
企业会议新闻稿是企业对外传递信息的重要途径之一,它能够将企业的决策、动态以及成果展示给公众。本文伯乐网络传媒将详细解析企业会议新闻稿的写作要点和技巧,以及常见问题及解决方法,帮助大家更好地完成企业会议新闻稿的撰写工作。 一、企业…...
算法 滑动窗口最大值-(双指针+队列)
牛客网: BM45 题目: 数组num, 窗口大小size, 所有窗口内的最大值 思路: 用队列作为窗口,窗口内存储数组坐标,left window[0], right从数组0开始遍历完数组,每次新增元素时,(1)先对窗口大小进行收缩到size大小范围,即…...

Java 并发编程面试题——BlockingQueue
目录 1.什么是阻塞队列 (BlockingQueue)?2.BlockingQueue 有哪些核心方法?3.BlockingQueue 有哪些常用的实现类?3.1.ArrayBlockingQueue3.2.DelayQueue3.3.LinkedBlockingQueue3.4.PriorityBlockingQueue3.5.SynchronousQueue 4.✨BlockingQu…...
Ubuntu Nacos开机自启动服务
1、创建service文件 在/lib/systemd/system目录下创建nacos.service文件 [Unit] Descriptionalibaba nacos Afternetwork.target Documentationhttps://nacos.io/zh-cn/[Service] Userroot Grouproot Typeforking Environment"JAVA_HOME/usr/local/programs/jdk-8u333-li…...

C++核心编程--继承篇
4.6、继承 继承是面向对象三大特征之一 有些类与类之间存在特殊的关系,例如下图中: 我们发现,定义这些类的定义时,都拥有上一级的一些共性,还有一些自己的特性。那么我们遇到重复的东西时,就可以考虑使…...
小程序 解决自定义弹窗滚动穿透问题,解决弹窗背景内容滚动问题
方法一、catchtouchmove"true", 可以实现弹框背景不滚动,但是也会导致弹框自身无法滚动,如果你的弹窗本身是不需要滚动的,用这个方法是极佳的。 <view class"pop" catchtouchmove"true"> …...

win10搭建Selenium环境+java+IDEA(2)
接着上一个搭建环境开始叙述:win10系统x64安装java环境以及搭建自动化测试环境_荟K的博客-CSDN博客 上一步结尾的浏览器驱动,本人后面改到了谷歌浏览器.exe文件夹下: 这里需要注意,这个新路径要加载到系统环境变量中。 上一步下…...

抢先一步感受未来:Raspberry Pi 5正式发布!
在经历了几年全球供应链困境导致 Raspberry Pi 单板计算机的产能降低和零售价格上涨之后,今天终于迎来了更新。Raspberry Pi 4 上市四年后,今天Raspberry Pi 5正式发布!新推出的 Raspberry Pi 5 配备了经过大幅改进升级的SoC,带来…...

【教程】Ubuntu自动查看有哪些用户名与密码相同的账户,并统一修改密码
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 目录 背景说明 开始操作 修改密码 背景说明 有些用户为了图方便或者初始创建用户默认设置等原因,会将密码设置为与用户名相同,但这就使得非常不安全。甚至如果该用户具有sudo权限&#…...

基于 Python+DenseNet121 算法模型实现一个图像分类识别系统
项目展示 一、介绍 DenseNet(Densely Connected Convolutional Networks)是一种卷积神经网络(CNN)架构,2017年由Gao Huang等人提出。该网络的核心思想是密集连接,即每一层都接收其前面所有层的输出作为输…...
贪心算法-点灯问题
1、题目描述 给定一个字符串str,只由 ‘X’ 和 ‘.’ 两种字符构成。‘X’ 表示墙,不能放灯,点亮不点亮都可;’.’ 表示居民点,可以放灯,需要点亮。如果灯放在i位置,可以让 i-1,i 和…...

软件测试之单元测试自动化入门基础
单元测试自动化 所谓的单元测试(Unit Test)是根据特定的输入数据,针对程序代码中的最小实体单元的输入输出的正确性进行验证测试的过程。所谓的最小实体单元就是组织项目代码的最基本代码结构:函数,类,模块等。在Python中比较知名…...

93 # 实现 express 错误处理中间件
上一节实现了 express 的中间件,这一节来实现错误处理中间件 执行某一步出错了,统一规定调用 next 传递的参数就是错误信息 先看 express 实现的demo const express require("express"); const app express();app.use("/", (re…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...

如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...

云安全与网络安全:核心区别与协同作用解析
在数字化转型的浪潮中,云安全与网络安全作为信息安全的两大支柱,常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异,并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全:聚焦于保…...
游戏开发中常见的战斗数值英文缩写对照表
游戏开发中常见的战斗数值英文缩写对照表 基础属性(Basic Attributes) 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...