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协议的版本,无法完成处理

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

css学习之路:sass学习基础篇

SCSS 一、动态的样式语言 让CSS有变量的概念css有很多的缺点 语法不够强大,没有变量和合理的样式复用机制,导致难以维护,我们就可以使用动态样式语言,赋予CSS新的特性。常见的动态样式语言 scss/sass(scss兼容sass&am…

厚积薄发11年,鸿蒙究竟有多可怕

12月20日中国工程院等权威单位发布**《2023年全球十大工程成就》。本次发布的2023全球十大工程成就包括“鸿蒙操作系统”在内。入围的“全球十大工程成就”,主要指过去五年由世界各国工程科技工作者合作或单独完成且实践验证有效的,并且已经产生全球影响…

云尚办公项目学习

完整的笔记可以参考这个专栏,写的挺详细的:云尚办公课件笔记,come on boy form-create前端组件 formProps记录了表单有哪些表单项,分别是哪些类型(下拉,单选,输入框) formOptions记…

周鸿祎分享大模型十大趋势:2024将出现杀手级应用

1月5日,“2023年风马牛年终秀”上,三六零(601360.SH,下称“360”)集团创始人周鸿祎分享了对2024年大模型发展趋势的十大预测,呼吁企业树立AI信仰,All in AI。他认为,创新才能破局&am…

shell脚本实现九九乘法表

9*9乘法表 判断服务是否开启 1.查看80端口是否被监听 [rootlocalhost ~]# ss -an | grep 80 tcp LISTEN 0 128 *:80 *:* 2.查看80端口/httpd服务是否开启 [rootlocalhost ~]# n…

【Python学习】Python学习2

目录 【Python学习】Python学习2 1.前言2.基本语法2.1标识符2.2保留字2.3行和缩进2.4多行语句2.5 Python 引号2.6 Python注释2.7 Python空行2.8 等待用户输入2.9 print 输出2.10 多个语句构成代码组2.11 命令行参数 参考 文章所属专区 Python学习 1.前言 主要是Python基本语…

《Python自动化测试九章经》

Python是当前非常流行的一门编程语言,它除了在人工智能、数据处理、Web开发、网络爬虫等领域得到广泛使用之外,他也非常适合软件测试人员使用,但是,对于刚入行的测试小白来说,并不知道学习Python语言可以用来完成哪些测…

kali-Linux安装ARL灯塔教程以及timeout of 20000ms exceeded 的解决方法

FLAG:别和妈妈诉苦,她帮不上,也睡不着。 专研方向: docker,ARL资产灯塔系统 每日emo:天冷了,你还在坚持吗? 欢迎各位与我这个菜鸟交流学习 kali安装ARL灯塔教程 1.安装docker环境,…

使用爬虫爬取热门电影

文章目录 网站存储视频的原理M3U8文件解读网站分析代码实现 网站存储视频的原理 首先我们来了解一下网站存储视频的原理。 一般情况下&#xff0c;一个网页里想要显示出一个视频资源&#xff0c;必须有一个<video>标签&#xff0c; <video src"xxx.mp4"&…

win7系统报错msvcp140.dll丢失的多种解决方法分享

在Windows 7操作系统中&#xff0c;msvcp140.dll是一个非常重要的动态链接库文件&#xff0c;它负责许多应用程序的正常运行。然而&#xff0c;由于各种原因&#xff0c;我们可能会遇到丢失msvcp140.dll的问题。当msvcp140.dll文件丢失或损坏时&#xff0c;可能会导致程序无法启…

Go语言中的HTTP请求和响应处理

在Web开发中&#xff0c;HTTP请求和响应是核心的交互方式。Go语言&#xff0c;作为一种高效且现代的编程语言&#xff0c;为开发者提供了简洁、强大的工具来处理HTTP请求和响应。本文将简要介绍在Go语言中如何处理HTTP请求和响应。 在Go语言中&#xff0c;HTTP请求和响应的处理…

c语言-函数指针

目录 前言一、函数指针1.1 函数指针定义1.2 函数指针调用函数1.3 函数指针代码分析 总结 前言 本篇文章介绍c语言中的函数指针以及函数指针的应用。 一、函数指针 函数指针&#xff1a;指向函数的指针。 函数在编译时分配地址。 &函数名 和 函数名代表的意义相同&#xf…

Linux下从sqlite3源码编译出sqlite3库及相关可执行程序

目录 1. 下载sqlite3源码并编译 2. 下载Tcl库并编译 3. 再次编译sqlite源码 1. 下载sqlite3源码并编译 打开SQLite Download Page&#xff0c;滚动到页面的下面&#xff0c;找到源码量最大的那个&#xff08;其它的估计也行&#xff0c;但源码最大的本人感觉功能最全&#…

Java集合框架深度解析-ArrayList

Java的集合框架提供了一组实现常用数据结构的类和接口。理解集合框架对于Java程序员来说至关重要&#xff0c;因为它们在日常编程中广泛应用。 为什么需要集合框架&#xff1f; 在编程中&#xff0c;我们经常需要存储和操作一组对象。集合框架提供了用于表示和操作对象组的通…

需方管理运维运营服务的心得

在确保供应商提供的运营维护服务达到需方质量标准&#xff0c;并保障供应商具备相应的服务条件与能力方面&#xff0c;需方必须采纳一整套综合性的管理措施。这包括但不限于方法论、技术工具、制度化流程、以及完备的文档记录等。以下是一份精炼的方案&#xff0c;涉及至关重要…

Dockerfile - 工作流程、构建镜像、文件语法

目录 一、Dockerfile 1.1、简介 1.2、Dockerfile 构建镜像的流程 1.3、Dockerfile 文件语法 1.3.1、注意事项 1.3.2、FROM 1.3.3、MAINTAINER&#xff08;官方已废弃&#xff09; 1.3.4、RUN 1.3.5、EXPOSE 1.3.6、WORKDIR 1.3.7、ADD 和 COPY 1.3.8、ENV 1.3.9、…

详解bookkeeper AutoRecovery机制

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

【排序算法总结】

目录 1. 稳点与非稳定排序2. 冒泡排序3. 简单选择排序4. 直接插入排序5. 快排6. 堆排7. 归并 1. 稳点与非稳定排序 不稳定的&#xff1a;快排、堆排、选择原地排序&#xff1a;快排也是非原地排序&#xff1a;归并 和三个线性时间排序&#xff1a;桶排序 &#xff0c;计数&…

前缀和算法模板

一维前缀和 算法用途&#xff1a;快速求出数组中某一连续区间的和 一维前缀和算法模板 1、预处理出一个 dp 数组 要求原数组存储在 n 1 的空间大小中&#xff0c;其中后 n 个空间存数据。 dp数组&#xff0c;数组开 n 1个空间&#xff0c;dp[i] 表示 [ 1, i ] 区间内所有…