当前位置: 首页 > news >正文

HTTP基础知识总结

目录

一、什么是HTTP?

二、与HTTP有关的协议

三、HTTP请求特征

四、HTTP组成格式

五、HTTP标头

1.通用标头

2.实体标头

3.请求标头

4.响应标头

六、HTTP状态码分类


我们在日常测试过程中,也可以通过浏览器F12简单定位是前端问题还是后端问题,同样的在接口自动化测试过程中,基本都是发送HTTP/HTTPS请求,本文主要是讲解下HTTP基础知识,适合小白。后续会讲解接口自动化测试中Python库中强大的requests库,尽请期待。

一、什么是HTTP?

HTTP(超文本传输协议):在计算机世界里专门在两点之间进行传输文字、图片、音频、视频等超文本数据的约束和规范。网络协议。

二、与HTTP有关的协议

  • TCP/IP协议(又称为协议簇):主要包含TCP(传输控制协议--可靠)、IP(通信寻址),还有UDP(用户数据报协议)、ICMP(Internal控制报文协议)、ARP(地址解析协议)。
  • DNS(域名系统):将域名和IP地址相互映射的一个分布式数据库。
  • URI/URL:URI(统一资源标示符),URL(统一资源定位符,即网址),URN(统一资源名称)。

  • HTTPS---在HTTP的基础上加了SSL层,就是说:HTTPS=HTTP+SSL/TLS(80端口是HTTP的默认端口、443端口是HTTPS的默认端口)

三、HTTP请求特征

  • 支持客户-服务器
  • 简单快速。常用的HTTP请求方式有:get、head、post
  • 灵活:HTTP允许传输任意类型的数据对象
  • 无连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,断开连接
  • 无状态:协议对于事务处理没有记忆能力

四、HTTP组成格式

  • HTTP组成:起始行、头部字段、消息正文

        起始行和头部字段并成为请求头或响应头---header

        消息正文:称为实体---body

        HTTP每次发送的报文必须含有header,body可以没有,且header和body之间必须要有一个空行

每个报文的起始行由:请求方法、URL字段、HTTP版本字段组成

  • HTTP的请求方法一般有8种:

Get(获取资源):用于请求访问已经被URI识别的资源

Post(传输实体)

Get和Post唯一的最大的不同就是对于Post来说后面要请求的数据不是必须特定赋值的

Put(传输文件):存在安全性问题

Head(获取响应头部):head和get一样,只是不返回报文主题部分

Delete(删除文件):按请求URI删除指定的资源

Options:询问支持的方法

Trace:追踪路径

Connnect:隧道协议连接代理,主要使用SSL(安全套接层)和TLS(传输层安全)协议加密后通过网络隧道传输

五、HTTP标头

根据属性所在的位置可划分为:通用标头实体标头请求标头响应标头

根据是否被缓存可划分为:end-to-end(端到端首部)、top-to-top(逐跳首部)

逐跳首部:connection、keep-alive、proxy-authenticate、proxy-authorization、trailer、TE、transfer-encoding、upgrade

端到端首部:cache-control、pragma、via、warning

1.通用标头

通用标头:用于传达有关消息本身的信息,而不是它所携带的内容。

主要的通用标头有:cache-control、connection、date、pragma、trailer、transfer-encoding、upgrade、via、warning

cache-control:通用标头的指令,能够管理如何对HTTP的请求或响应使用缓存。

可缓存性:no-cache、no-store、private、public

缓存有效性时间:max-age、s-maxage、max-stale、min-fresh

重新验证并重新加载:must-revalidate、proxy-revalidate

其他:only-if-cached、no-transform

Connection:HTTP协议使用TCP来管理连接方式,分为:持久性连接、非持久性连接。

持久性连接:一次会话完成后,TCP连接并未关闭,再次发起请求就不需要建立TCP连接,可直接进行请求和响应。

从HTTP1.1开始,默认使用持久性连接。

Connection:keep-alive

keep-alive也是一个通用标头,通常connection和keep-alive一起使用,keep-alive通常由2个参数:timeout、max。

keep-alive:timeout=5,max=1000

Timeout:空闲连接必须打开的最短时间,也就是说请求的连接时间不能少于5s

Max:在连接关闭之前服务器所能收到的最大请求数。

非持久性连接:一次会话请求/响应后关闭连接的方式,即:connection:close

Date:可出现在请求标头和响应标头中,格式为:

Date :Wed, 21 Oct  2015 07:28:00 GMT    -----格林威治标准时间

Pragma:HTTP1.1之前版本的历史遗留字段,pragma:no-cache

Trailer:报文首部字段

transfer-encoding:内容协商,规定传输报文所采用的编码方式

Upgrade:首部字段upgrade用于检测HTTP协议及其他协议是否可使用更高版本进行通信。

Via:跟踪客户端和服务器之间的请求或响应路径。

Warning :警告。

2.实体标头

实体标头:描述消息正文内容。

Allow:资源可支持的HTTP方法

Content-Encoding:实体主体适用的编码方式

Content-Language:实体主体的自然语言

Content-Length:实体主体的大小(单位:字节)

Content-Location:替代对应资源的URI

Content-MD5:实体主体的报文摘要

Content-Range:实体主体的位置范围

Content-Type:实体主体的媒体类型

Expires:实体主体过期的日期时间

Last-Modified:资源的最后修改日期时间

3.请求标头

请求标头:告知客户端能够接收的MIME类型。

MIME:描述消息内容类型的因特网标准。包含文本、图像、音频、视频以及其他应用程序专用数据等。

MIME类型:

文本文件text/html、text/plain、text/css、application/json、application/xml

图片文件 image/jpeg、 image/gif、 image/png
视频文件 :video/mpeg ̵ video/quicktime
应用程序二进制文件 application/octet-stream ̵ application/zip
一般MIME类型也会和q属性一起使用,q代表权重。

常见请求标头:

Accept: application/json, text/plain, */*,q=0.1
Accept-Charset: 表示客户但能够接受的字符编码。如:utf-8, iso-8859-1;q=0.5, *;q=0.1
Accept-Encoding: 表示客户端希望服务端返回的内容编码。如:gzip, deflate, br
Accept-Language: 表示客户端需要服务端返回的语言类型。如:zh-CN,zh;q=0.9
Authorization: 用于向服务器认证用户代理的凭据。
Expect: 指示服务器需要满足的期望才能正确处理请求。
From: 告知服务器使用用户代理的电子邮件地址。
Host: 服务器的域名和服务器监听的TCP端口号。
Range: 指示服务器应返回文档指定部分的资源,可以一次请求一个Range来返回多个部分,服务器会将这些资源返回各个文档中。
Referer: 告知服务器该网页是从哪个页面链接过来的。
TE: 告知服务器能够处理响应的传输编码方式及相对优先级。
User-Agent: 创建请求的浏览器和用户代理名称等信息传达给服务器。

4.响应标头

响应标头:提供了服务器对客户端请求的响应信息。

Accept-Ranges: 是否接受字节范围请求
Age: 推算资源创建经过时间
ETag: 资源的匹配信息
Location: 令客户端重定向至指定URI
Proxy-Authenticate: 代理服务器对客户端的认证信息
Retry-After: 对再次发起请求的时机要求
Server: HTTP服务器的安装信息
Vary: 代理服务器缓存的管理信息
www-Authenticate: 服务器对客户端的认证信息
Access-Control-Allow-Origin: 告诉浏览器允许该来源进行资源访问
Keep-Alive: Connection非连续连接的存活时间,可以进行指定
Set-Cookie: 服务器向客户端发送sessionID

六、HTTP状态码分类

分类分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务端错误,服务器在处理请求过程中发生了错误

HTTP状态码列表:

状态码

状态码英文名称

中文描述

100

Continue

继续。客户端应继续其请求

101

Switching Protocols

切换协议。服务器根据客户端的请求切换协议。

200

OK

请求成功。一般用于GET与POST请求

201

Created

已创建。成功请求并创建了新的资源

202

Accepted

已接受。已经接受请求,但未处理完成

203

Non-Authoritative Information

非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本

204

No Content

无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档

205

Reset Content

重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域

206

Partial Content

部分内容。服务器成功处理了部分GET请求

300

Multiple Choices

多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择

301

Moved Permanently

永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替

302

Found

临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI

303

See Other

查看其它地址。与301类似。使用GET和POST请求查看

304

Not Modified

未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源

305

Use Proxy

使用代理。所请求的资源必须通过代理访问

306

Unused

已经被废弃的HTTP状态码

307

Temporary Redirect

临时重定向。与302类似。使用GET请求重定向

400

Bad Request

客户端请求的语法错误,服务器无法理解

401

Unauthorized

请求要求用户的身份认证

402

Payment Required

保留,将来使用

403

Forbidden

服务器理解请求客户端的请求,但是拒绝执行此请求

404

Not Found

服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面

405

Method Not Allowed

客户端请求中的方法被禁止

406

Not Acceptable

服务器无法根据客户端请求的内容特性完成请求

407

Proxy Authentication Required

请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权

408

Request Time-out

服务器等待客户端发送的请求时间过长,超时

409

Conflict

服务器完成客户端的 PUT 请求时可能返回此代码,服务器处理请求时发生了冲突

410

Gone

客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置

411

Length Required

服务器无法处理客户端发送的不带Content-Length的请求信息

412

Precondition Failed

客户端请求信息的先决条件错误

413

Request Entity Too Large

由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息

414

Request-URI Too Large

请求的URI过长(URI通常为网址),服务器无法处理

415

Unsupported Media Type

服务器无法处理请求附带的媒体格式

416

Requested range not satisfiable

客户端请求的范围无效

417

Expectation Failed

服务器无法满足Expect的请求头信息

500

Internal Server Error

服务器内部错误,无法完成请求

501

Not Implemented

服务器不支持请求的功能,无法完成请求

502

Bad Gateway

作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应

503

Service Unavailable

由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中

504

Gateway Time-out

充当网关或代理的服务器,未及时从远端服务器获取请求

505

HTTP Version not supported

服务器不支持请求的HTTP协议的版本,无法完成处理

相关文章:

HTTP基础知识总结

目录 一、什么是HTTP? 二、与HTTP有关的协议 三、HTTP请求特征 四、HTTP组成格式 五、HTTP标头 1.通用标头 2.实体标头 3.请求标头 4.响应标头 六、HTTP状态码分类 我们在日常测试过程中,也可以通过浏览器F12简单定位是前端问题还是后端问题&a…...

创意与技术的结晶:AI魔法绘图与中文描述的完美结合

在人类文明的长河中,创意与技术一直是推动发展的重要动力。随着科技的日新月异,人工智能(AI)在创意领域的应用逐渐崭露头角,而AI魔法绘图与中文描述的结合,更是将这一趋势推向了新的高度。AI魔法绘图是一种…...

Python:int(value, base=10)

int(value, base2) 是 Python 中的一个内置函数,用于将一个字符串或数字以指定的进制转换为整数。 函数的参数含义如下: value:要进行转换的值,可以是一个字符串或数字。base:进制数,默认为 10&#xff0…...

Vue之调用store的action(包含getter调用)

文章目录 Vue之调用store的action(包含getter调用)调用store的action方法一:Promise 链式调用方法二:async/await方法三:Promise.all()同时执行 调用store的getter方法一:this.$store.getters调用方法二:mapGetters调用…...

蟹目标检测数据集VOC格式400张

蟹,一种独特的海洋生物,以其强壮的身体和独特的生活习性而闻名。 蟹的身体宽厚,有一对锐利的大钳子,这使得它们在寻找食物和保护自己时非常有力。蟹的外观颜色多样,有绿色、蓝色、棕色和红色等,这使得它们在…...

PyTorch中常用的工具(4)Visdom

文章目录 前言3.2 Visdom 前言 在训练神经网络的过程中需要用到很多的工具,最重要的是数据处理、可视化和GPU加速。本章主要介绍PyTorch在这些方面常用的工具模块,合理使用这些工具可以极大地提高编程效率。 由于内容较多,本文分成了五篇文…...

Linux(ubuntu)下git / github/gitee使用

先附上git命令 linuxchenxiao:~$ cd Templates/ 先进入一个目录,也可mkdir新建一个目录:用于接下来初始化为git可以管理的仓库 这个目录就是所说的工作目录,指当前正在进行开发的项目的本地目录。 linuxchenxiao:~/Templates$ git init 已…...

回归预测 | MATLAB实OOA-LSTM基于鱼鹰优化算法优化长短期记忆网络的多输入单输出数据回归预测模型 (多指标,多图)

回归预测 | MATLAB实OOA-LSTM基于鱼鹰优化算法优化长短期记忆网络的多输入单输出数据回归预测模型 (多指标,多图) 目录 回归预测 | MATLAB实OOA-LSTM基于鱼鹰优化算法优化长短期记忆网络的多输入单输出数据回归预测模型 (多指标&a…...

2023年工作初体验

23年终于正式入职,参与了正式上线的电商平台、crm平台等项目的研发,公司规模较小,气氛融洽,没有任何勾心斗角、末位淘汰,几乎没什么压力。虽然是我的第一家公司,但实际是个适合养老的公司(笑 总…...

PostgreSQL 作为向量数据库:入门和扩展

PostgreSQL 拥有丰富的扩展和解决方案生态系统,使我们能够将该数据库用于通用人工智能应用程序。本指南将引导您完成使用 PostgreSQL 作为向量数据库构建生成式 AI 应用程序所需的步骤。 我们将从pgvector 扩展开始,它使 Postgres 具有特定于向量数据库…...

亚信安慧AntDB数据库:企业核心业务系统数据库升级改造的可靠之选

在近期召开的“2023年国有企业应用场景发布会”上,亚信安慧公司的核心数据库产品AntDB闪耀登场,技术总监北陌先生针对企业核心业务系统数据库升级改造的关键议题发表了深度分享。他从研发、工程实施和运维管理三个维度细致剖析了当前企业在进行数据库升级…...

CommonJS 和 ES6 Module:一场模块规范的对决(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...

python快速实现简易电子音乐盒(电子钢琴)

首先第一步附上完整源码(基于pygame库) import pygame# 初始化pygame pygame.init()# 设置窗口大小 window_size (800, 600) screen pygame.display.set_mode(window_size)# 加载音频文件 C4 pygame.mixer.Sound("test1/C4.wav") D4 pyga…...

详解bookkeeper AutoRecovery机制

引言小故事 张三在一家小型互联网公司上班,由于公司实行的996,因此经常有同事“不辞而别”,为了工作的正常推进,团队内达成了某种默契,这种默契就是通过某个规则来选出一个同事,这个同事除了工作之余还有额…...

使用 Ubuntu 20.04 进行初始服务器设置

前些天发现了一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站。 使用 Ubuntu 20.04 进行初始服务器设置 介绍 首次创建新的 Ubuntu 20.04 服务器时,应该执行一些重…...

【SpringCloud】6、Spring Cloud Gateway路由配置

在 Spring Cloud Gateway 中配置 uri 有三种方式,包括: 1、WebSocket路由 spring:cloud:gateway:routes:- id: bt-apiuri: ws://localhost:9090/predicates:...

pdf转换成word怎么转?一篇文章教你轻松搞定

pdf转换成word怎么转?你是否曾经遇到过需要将PDF文件转换成Word格式的情况?比如,你需要编辑一个文档,或者想将一些电子书或报告复制到Word中以便于编辑或重新排版。在这种情况下,如何将PDF文件转换成Word格式呢&#x…...

【中南林业科技大学】计算机组成原理复习包括题目讲解(超详细)

来都来了点个赞收藏关注一下再走呗🌹🌹🌹🌹 第1章:绪论 1.冯诺依曼机特点,与现代计算机的区别 冯诺依曼计算机的基本思想是:程序和数据以二进制形式表示,存储程序控制。在计算机中&…...

恭喜 Databend 上榜 2023 开源创新榜「优秀开源项目 」

近日,国家科技传播中心见证了一场开源界的重要事件:由中国科协科学技术传播中心、中国计算机学会、中国通信学会和中国科学院软件研究所联合主办,CSDN 承办的 2023 年开源创新榜专家评审会圆满落幕。由王怀民院士担任评委会主任,评…...

网络连通性批量检测工具

一、背景介绍 企业网络安全防护中,都会要求配置物理网络防火墙以及主机防火墙,加强对网络安全的防护。云改数转之际,多系统上云过程中都会申请开通大量各类网络配置,针对这些复杂且庞大的网络策略开通配置,那么在网络配…...

2023高级人工智能期末总结

1、人工智能概念的一般描述 人工智能是那些与人的思维相关的活动,诸如决策、问题求解和学习等的自动化; 人工智能是一种计算机能够思维,使机器具有智力的激动人心的新尝试; 人工智能是研究如何让计算机做现阶段只有人才能做得好的…...

Oracle数据库迁移所有文件到新挂载磁盘路径

主要步骤: 1、停掉服务, 2、关闭数据库shutdown immediate 3、移动数据文件到新的位置。 4、启动到mount状态,如果也移动了ctl,需要启动到nomount下,生成参数文件。 5、alter database rename 文件名 to 新位置&a…...

基于YOLOv7算法的高精度实时安全背心目标检测识别系统(PyTorch+Pyside6+YOLOv7)

摘要:基于YOLOv7算法的高精度实时安全背心目标检测系统可用于日常生活中检测与定位安全背心,此系统可完成对输入图片、视频、文件夹以及摄像头方式的目标检测与识别,同时本系统还支持检测结果可视化与导出。本系统采用YOLOv7目标检测算法来训…...

Mac——VsCode使用格式化工具进行整理和格式化

1. 打开VSCode编辑器。 2. 点击左下角⚙️图标,打开设置 3. 进入设置后,你会看到一个搜索框,在搜索框中输入 format on save 来查找相关设置项。 4. 在设置列表中找到 Editor: Format On Save 选项,勾选它以启用在保存文件时自动格…...

73.乐理基础-打拍子-还原号、临时变音记号在简谱中的规则

上一个内容:72.乐理基础-打拍子-加延音线的节奏型-CSDN博客 下图中1-13,就是四几拍中所有可能出现的节奏型,以及它们的组合方式,需要练习,可以买一本视唱书去练习,搜乐谱练习,自己写节奏型根据…...

一款超酷的一体化网站测试工具:Web-Check

Web-Check 是一款功能强大的一体化工具,用于发现网站/主机的相关信息。用于检查网页的工具,用于确保网页的正确性和可访问性。它可以帮助开发人员和网站管理员检测网页中的错误和问题,并提供修复建议。 它只需要输入一个网站就可以查看一个网…...

MockServer简单使用记录

下载源码 下载git源码:git clone https://github.com/mock-server/mockserver.git 通过执行文件编译成jar包 ./mvnw clean package 可能会报错。 启动命令 java -jar ./mockserver-netty-jar-with-dependencies.jar -serverPort 1080 -proxyRemotePort 80 -pro…...

AI+金融:大模型引爆金融科技革命

仅供机构投资者使用 证券研究报告|行业深度研究报告 AI金融:大模型引爆金融科技革命 “AI应用”系列(二) 华西计算机团队 2023年7月28日 分析师:刘泽晶 联系人:刘波 SAC NO:S1120520020002 邮箱&#xff1a…...

数据库(二)实验一:MySQL数据库的C/S模式部署

实验要求 在云服务器上启动两个实例Server和Client,并实现两个实例之间的免密ssh登录。在Server和Client上分别安装MySQL,在Server上创建数据库和用户,在Client上远程连接Server的数据库。 实验内容 创建两个云服务器实例 在腾讯云购买两个…...

RLHF几大常用框架实践对比(trlx、deepspeedchat、colossalaichat)

原文:RLHF几大常用框架实践对比(trlx、deepspeedchat、colossalaichat) - 知乎 目录 收起 一、RLHF的作用 二、实践效果 三、怎么做 1、框架 2、算法 3、数据 4、调参 一、RLHF的作用 从InstructGPT的论文中看,RLHF目的…...

学做面包到什么网站/如何快速收录一个网站的信息

作者:XMOS,排版整理:晓宇微信公众号:芯片之家(ID:chiphome-dy)近日,英国半导体科技公司XMOS宣布推出Xcore.ai ,它是一款面向AIoT市场的超强性能跨界处理器,该处理器可在单个设备中提…...

免费网站建设app/seo关键词优化的技巧和方法

...f struct ngx_queue_s ngx_queue_t;struct ngx_queue_s {ngx_queue_t *prev;ngx_queue_t *next;};#define ngx_queue_init(q)这次给大家带来jQuery的prev()使用详解,jQuery的prev()使用注意事项有哪些,下面就是实战案例,一起来看一下。pre…...

网站的模板演示怎么做/南宁百度快速优化

C语言经典算法 - 老鼠走迷官(一)2020-02-10编程之家https://www.jb51.cc编程之家收集整理的这篇文章主要介绍了C语言经典算法 - 老鼠走迷官(一),编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。下面是编程之家 jb51.cc 通过网络…...

单位网站建设收费标准/网页设计与制作教程

要回答你的这个问题,I have a UIBezierPath inside my custom UIView draw(_ rect: CGRect)function. I would like to fill the path with a gradient color.让我们说你有一个椭圆形的路径,let path UIBezierPath(ovalIn: CGRect(x: 0, y: 0, width: 100, height: 100))要创建…...

wp网站搬家教程/百度账号快速注册入口

从Java 5 开始引入了静态导入语法(import static)使用静态导入可以使被导入类的静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名。package cn.itcast.p6.staticimport;import java.util.*; import static java.uti…...

b2c外贸网站/怎么制作个人网页

conn.setRequestProperty("Content-Length", String.valueOf(info.getBytes().length));出现错误的代码为:conn.setRequestProperty("Content-Length", String.valueOf(info.length())); 这个应该先将内容转换成bytes再计算它的长度length。改…...