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://www.mzph.cn/news/597622.shtml

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

相关文章

KeyError: ‘model_state_dict‘

问题 加载模型权重文件时获取model_state_dict键失败 解决 单步调试发现保存模型权重时正确保存了该键值对,再次调试时发现莫名奇妙又没错了 首先确认保存模型时的状态字典键名:确保在保存模型权重时,正确地使用了 model.state_dict() 方法…

局部与整体的关联特性,如图所示

局部与整体的关联特性是指事物的局部部分与整体之间存在一定的关联关系。它强调整体是由局部构成,局部又反向影响整体。具体包括以下几个方面的特性: 互依性:局部与整体相互依赖,一个的变动会影响另一个的变动。局部的变化会对整体…

Python-CSV文件的存储

CSV文件存储 CSV其文件以纯文本形式存储表格数据。CSV文件是一个字符序列,可以由任意数目的记录组成,各种记录由某种换行符分隔开。它比Excel文件更加简洁,XLS文本是电子表格,包含文本、数值、公式和格式等内容,CSV中则…

Linux系统使用超详细(六)~进程管理

目录 一、认识进程 二、进程号 2.1.进程号概念 2.2.进程号作用 三、进程查看 3.1. ps命令: 3.2. top命令: 3.3. htop命令: 3.4. pstree命令: 3.5. pgrep命令: 四、进程状态 五、进程优先级 六、进程优先…

neo4j图数据库安装和测试

neo4j图数据库安装和测试 1. 下载合适的neo4j软件版本。 https://we-yun.com/doc/neo4j/ https://neo4j.com/deployment-center/#enterprise 2. 下载JAVAJDK 由于neo4j是一个用Java编写的图形数据库,因此在安装和运行Neo4j之前,需要先安装Java Developm…

真机调试HarmonyOS应用报错

问题表现: 01/04 19:00:01: Launching com.example.simplevideo $ hdc shell am force-stop com.example.simplevideo $ hdc shell bm uninstall com.example.simplevideo $ hdc file send E:\harmony\SimpleVideo\entry\build\default\outputs\default\entry-defau…

docker (portainer 安装nginx)

汉化版步骤可以参考:写文章-CSDN创作中心https://mp.csdn.net/mp_blog/creation/editor/135258056 一、创建容器 二、配置端口,以及容器卷挂载 挂载目录配置:(下方截图的目录如下,docker 改为 mydocker,用docker作为根…

使用KVM命令集管理虚拟机

1、KVM基本功能管理 1)查看命令帮助 [rootlocalhost ~]# virsh -h ......//省略输出内容 2)查看KVM的配置文件存放目录(rhel7.1是虚拟机系统实例的配置文件) [rootlocalhost ~]# ls /etc/libvirt/qemu autostart networks r…

《设计模式》之策略模式

策略模式定义 比如对象的某个行为,在不同场景有不同实现方式,可以将这些行为的具体实现定义为一组策略,每个实现类实现种策略,在不同场景使用不同的实现,并且可以自由切换策略。 策略模式结构 策略模式需要一个策略…

react antd,echarts全景视图

1.公告滚动,40s更新一次 2.echarts图标 左右轮播 60s更新一次 3.table 表格 import { useState, useEffect } from react;import Slider from react-slick; import slick-carousel/slick/slick-theme.css; import slick-carousel/slick/slick.css;import Layout fro…

springboot项目 java -jar xxx.jar 没有主清单属性解决方法

1.在pom文件中添加如下 <plugins><!--解决SpringBoot打包成jar后运行提示没有主清单属性--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><fork…

el-autocomplete远程搜索使用及el-upload上传多个文件流给后端,详情接口返回的是文件地址,前端将文件地址转成文件流,回传文件流给后端

最近遇到一个项目,里面有2个需求我觉得挺常见的,第一个需求是一个表单里,当用户在输入名称后,前端调接口发请求获取到关联名称的企业名称,并展示,然后当用户选中企业后,前端调接口获取选中企业的具体信息,并填充到表单里;第二个需求是,表单里有个上传图片的功能,前端…

JVS规则引擎和智能BI(自助式数据分析)1.3新增功能说明

规则引擎更新功能 新增: 1、数据源新增Excel数据源&#xff1b; Excel数据源功能允许用户将Excel文件作为数据源导入&#xff0c;并进行数据清洗、转换和处理&#xff0c;以实现数据的集成、可视化和深度分析&#xff0c;为决策提供强大支持&#xff0c;同时保持良好的交互性…

新一代爬取JavaScript渲染页面的利器-playwright(一)

Playwright的使用 Playwright是微软在2020年初开源的一款新一代自动化测试工具&#xff0c;其功能和**Selenium**、Pyppeteer类似&#xff0c;都可以驱动浏览器进行自动化操作&#xff0c;但是也具备了Selenium、Pyppeteer不具备的更好的API&#xff0c;是新一代爬取JavaScrip渲…

HbuilderX中的git的使用

原文链接https://blog.csdn.net/Aom_yt/article/details/119924356

CentOs 环境下使用 Docker 部署 Ruoyi-Vue

CentOs 环境下使用 Docker 部署 Ruoyi-Vue RuoYi-Vue 项目下载地址 RuoYi-Vue: &#x1f389; 基于SpringBoot&#xff0c;Spring Security&#xff0c;JWT&#xff0c;Vue & Element 的前后端分离权限管理系统&#xff0c;同时提供了 Vue3 的版本 (gitee.com) Docker 部…

Java 流程控制语句

程序设计中规定的三种流程结构&#xff0c;即&#xff1a; 顺序结构 程序从上到下逐行地执行&#xff0c;中间没有任何判断和跳转 分支结构 根据条件&#xff0c;选择性地执行某段代码 有 if…else 和 switch-case 两种分支语句 循环结构 根据循环条件&#xff0c;重复性的执…

DRF从入门到精通九(权限控制)

文章目录 一、权限控制模型1) ACL(Access Control List,访问控制列表)2) RBAC(Role-Based Access Control,基于角色的访问控制)应用前后台权限控制实操 3) ABAC(Attribute-Based Access Control,基于属性的访问控制) 一、权限控制模型 1) ACL(Access Control List,访问控制列表…

郑州大学算法设计与分析实验2

判断题 1 #include<bits/stdc.h> using namespace std;const int N 50; int f[N], n;int main() { // freopen("1.in", "r", stdin);ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin >> n;f[1] 1; f[2] 1;for(int i 3; i &l…

ARM Cortex-Mx 权威指南笔记

用于中断或异常屏蔽特殊寄存器细节 1、PRIMASK 在许多应用中,可能都需要暂时禁止所有中断以执行一些时序关键的任务&#xff0c;此时可以使用PRIMASK寄存器。PRIMASK寄存器只能在特权状态访问。PRIMASK 用于禁止除NMI和 HardFault 外的所有异常它实际上是将当前优先级改为0(最…