前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >HTTP消息

HTTP消息

作者头像
玖柒的小窝
修改于 2021-11-08 01:36:55
修改于 2021-11-08 01:36:55
84000
代码可运行
举报
文章被收录于专栏:各类技术文章~各类技术文章~
运行总次数:0
代码可运行

HTTP消息是什么

HTTP报文,又称为HTTP消息,是服务器和客户端之间交换数据的模块。有两种类型的消息︰请求,由客户端发送用来触发一个服务器上的动作;响应,来自服务器的应答。 HTTP消息由采用ASClI编码的多行文本构成。在HTTP/1.1及早期版本中,这些消息通过连接公开地发送。在HTTP/2中,为了优化和性能方面的改进,曾经可人工阅读的消息被分到多个HTTP帧中。

HTTP消息结构

HTTP请求消息和响应消息具有相似的结构,由以下部分组成︰

  1. start line:一行起始行用于描述要执行的请求,或者是对应的状态,成功或失败。这个起始行总

是单行的。 2. HTTP headers:一个可选的HTTP头集合指明请求或描迹消息正文。 3. empty line:一个空行指示所有关于请求的元数据已经发送完毕。 4. body:一个可选的包含请求相关数据的正文(比如HTML表单内容),或者响应相关的文档。正文 的大小有起始行的HTTP头来指定。

起始行和HTTP消息中的HTTP头统称为“请求头”,而其有效负载被称为“消息正文”。

请求消息与响应消息

  • HTTP请求消息:由客户端发送用来触发一个服务器上的动作。
  • HTTP响应消息:来自服务器的应答。

HTTP请求

起始行

起始行(start-line)包含三个元素:

  1. 请求方法:描述要执行的动作。例如GET表示要获取资源,POST表示向服务器推送数据。
  2. 请求地址:通常是一个URL,或者是协议、端口和域名的绝对路径。
  3. HTTP版本:定义了剩余报文的结构,作为对期望的响应版本的指示符。

GET/home.html HTTP/1.1

请求方法

HTTP协议定义了一组请求方法,以表明要对给定资源执行的操作,指示针对给定资源要执行的期望动作。

请求方法

描试

GET

GET方法请求一个指定资源的表示形式。使用GET的请求应该只被用于获取数据

HEAD

HEAD方法请求一个与GET请求的响应相同的响应,但没有响应体

POST

POST方法用于将实体提交到指定的资源,通常导致状态或服务器上的副作用的更改

PUT

PUT方法用请求有效载荷替换目标资源的所有当前表示

DELETE

DELETE方法删除指定的资源

CONNECT

ONNECT方法建立一个到由目标资源标识的服务器的隧道

OPTIONS

OPTIONS方法用于描述目标资源的通信选项

TRACE

TRACE方法沿着到目标资源的路径执行一个消息环回测试

PATCH

PATCH方法用于对资源应用部分修改

请求头

请求头允许客户端向服务器端传递附加信息。请求头由名称(不区分大小写)后跟一个冒号“”,冒号后跟具体的值(不带换行符)组成。 根据不同上下文,可将请求头分为:

  1. 通用头:同时适用于请求和响应消息,但与最终消息主体中传输的数据无关的消息
  2. 请求头:包含更多有关要获取的资源或客户端本身信息的消息头。
  3. 实体头:包含有关实体主体的更多信息,比如主体长(Content-Length)度或其MIME类型。

请求主体

请求消息的最后一部分是请求主体。

  • 不是所有的请求都需要请求主体:例如获取资源的请求GET、HEAD、DELETE和OPTIONS,通常它们不需要请求主体。
  • 有些请求将数据发送到服务器以便更新数据:常见的的情况是POST请求(包含HTML表单数据)。

请求主体大致可分为两类:

  1. 单一资源主体:由一个单文件组成。该类型请求主体由两个header定义:Content-Type和Content-Lengtho
  2. 多资源主体:由多部分请求主体组成,每一部分包含不同的信息位。通常是和HTML表单连系在一起。

状态行

HTTP响应消息的起始行被称作状态行(status line),包含以下信息:

  1. 协议版本:通常为HTTP/1.1。
  2. 状态码:表明请求是成功或失败。常见的状态码是200,404,或302。
  3. 状态文本:一个简短的,纯粹的信息,通过状态码的文本描述,帮助人们理解该HTTP消息。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
HTTP/1.1 200 OK
复制代码

成功响应

状态码

描述

200 OK

请求成功

201 Created

该请求已成功,并因此创建了一个新的资源。这通常是在PUT请求之后发送的响应

202 Accepted

请求已经接收到,但还未响应,没有结果

lnformation

定集合,而是来自本地或者第三方的拷贝

203Non-Authoritative

服务器已成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确

204 No Content

服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息

205 Reset Content

服务器成功处理了请求,且没有返回任何内容。该响应主要是被用于接受用户输入后,立即重置表单

206 Partial Content

服务器已经成功处理了部分GET请求

重定向

状态码

描逑

300 Multiple Choice

被请求的资源有一系列可供选择的回馈信息

301MovedPermanently

被请求的资源已永久移动到新位置

302 Found

请求的资源现在临时从不同的URI响应请求

303 See Other

对应当前请求的响应可以在另一个URI上被找到,而且客户端应当采用GET的方式访问那个资源

304 Not Modified

如果客户端发送了一个带条件的 GET请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变

客户端响

状态码

描述

400 Bad Request

语义有误,当前请求无法被服务器理解

401 Unauthorized

当前请求需要用户验证

403 Forbidden

服务器已经理解请求,但是拒绝执行它

404 Not Found

请求失败,请求所希望得到的资源未被在服务器上发现

405 Method Not Allowed

请求行中指定的请求方法不能被用于请求相应的资源

服务端响应

状态码

描述

500 lnternal Server Error

服务器遇到了不知道如何处理的情况

501 Not lmplemented

此请求方法不被服务器支持且无法被处理

502 Bad Gateway

此错误响应表明服务器作为网关需要得到一个处理这个请求的响应

503 Service Unavailable

服务器没有准备好处理请求

504 Gateway Timeout

当服务器作为网关,不能及时得到响应时返回此错误代码

505HTTP Version Not Supported

服务器不支持请求中所使用的HTTP协议版本

HTTP响应

状态行

HTTP 响应的起始行被称作 状态行 (status line),包含以下信息:

  1. 协议版本,通常为 HTTP/1.1。
  2. 状态码 (**status code),表明请求是成功或失败。常见的状态码是 200404,或 302
  3. 状态文本 (status text)。一个简短的,纯粹的信息,通过状态码的文本描述,帮助人们理解该 HTTP 消息。

一个典型的状态行看起来像这样:HTTP/1.1 404 Not Found

响应头

响应的 HTTP headers遵循和任何其它 header 相同的结构:不区分大小写的字符串,紧跟着的冒号 (':') 和一个结构取决于 header 类型的值。 整个 header(包括其值)表现为单行形式。

有许多响应头可用,这些响应头可以分为几组:

  • *General headers,*例如 Via,适用于整个报文。
  • *Response headers,*例如 VaryAccept-Ranges,提供其它不符合状态行的关于服务器的信息。
  • Entity headers,例如 Content-Length,适用于请求的 body。显然,如果请求中没有任何 body,则不会发送这样的头文件。

响应主体

响应消息的最后一部分是响应主体。不是所有的响应都需要响应主体:例如具有状态码(如201或204)的响应,通常不会有响应主体。 响应主体大致可分为两类:

  1. 单一资源主体:由已知长度的单个文件组成。该类型响应主体由两个header定义Content-TypeContent-Lengtho
  2. 单一资源主体:由未知长度的单个文件组成,通过将Transfer-Encoding设置为chunked来使用chunks编码。
  3. 多资源主体:由多部分响应主体组成,每部分包含不同的信息段。但这是比较少见的。

MIME类型

MIME类型全称为Multipurpose Internet Mail Extensions,被译为多用途Internet邮件扩展类型,是一种标准化的方式来表示文档的性质和格式。 浏览器通常使用MIMVE类型(而不是文件扩展名)来确定如何处理文档;因此服务器设置正确以将正确的MIME类型附加到响应对象的头部是非常重要的。

类型

描述

经典示例

text

表明文件是普通文本

text/plain, text/htmnl, text/css, text/iavascript

image

表明是某种图像

image/gif, imag/png, imageljpeg, inage/bnp, image/webp

audio

表明是某种音频文件

audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav

video

表明是某种视频文件

video/webn, video/ogg

application

表明是某种二进制数据

application/octet-strean, application/pkcs12,application/vnd.mspowerpoint, application/xbtml.application/xml,application/pdf,application/json

HTTP/2.0

HTTP/1.x报文有一些性能上的缺点:

  • 消息头不像消息主体一样会被压缩。
  • 两个报文之间的header通常非常相似,但它们仍然在连接中重复传输。
  • 无法复用。当在同一个服务器打开几个连接时,TCP热连接比冷连接更加有效。HTTP/20引人了一个额外的步骤,它将HTTP/1x消息分成帧并嵌人到流(strean)中。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
HTTP消息
HTTP报文,又称HTTP消息,是服务器和客户端之间交换数据的方式。有两种类型的消息:请求,由客户端发送用来触妓一个服务器上的动作;响应,来自服务器的应答。
Dreamy.TZK
2020/08/10
9240
「 面试三板斧 」之 HTTP (上)
HTTP 在因特网的角色:充当一个信使的角色,干的就是一个跑腿的活,在客户端和服务端之间传递信息,但我们又不能缺少它。
lucifer210
2021/01/04
4350
「 面试三板斧 」之 HTTP (上)
2018-06-20 HTTP相关知识关于Content-TypePOST常见数据提交类型关于HTTP关于MIME类型
原文地址:https://blog.csdn.net/woaixiaoyu520/article/details/76690686
Albert陈凯
2018/07/24
1.9K0
【网络知识补习】❄️| 由浅入深了解HTTP(六) HTTP消息
HTTP消息 是服务器和客户端之间交换数据的方式。有两种类型的消息︰ 请求(requests)–由客户端发送用来触发一个服务器上的动作;响应(responses)–来自服务器的应答。
呆呆敲代码的小Y
2021/08/20
6390
【网络知识补习】❄️| 由浅入深了解HTTP(六) HTTP消息
前端应该知道的 HTTP 知识
HTTP 是由蒂姆·伯纳斯-李(TimBerners—Lee)于1989年在欧洲核子研究组织(CERN)所发起
GopalFeng
2020/09/24
5970
前端应该知道的 HTTP 知识
跟我一起探索HTTP-HTTP 消息
HTTP 消息是服务器和客户端之间交换数据的方式。有两种类型的消息:请求(request)——由客户端发送用来触发一个服务器上的动作;响应(response)——来自服务器的应答。
用户1418987
2023/10/16
2940
跟我一起探索HTTP-HTTP 消息
真正“搞”懂HTTP协议04之搞起来
  前两篇文章,我们从空间和时间的角度都对HTTP有了一定的学习和理解,那么基于上一篇的HTTP发展的时间顺序,我会在后面的文章由浅入深,按照HTTP版本内容的更迭,一边介绍相关字段的使用方法,一边讲解其特性和目的,并和大家一起手写测试代码,学以致用。
zaking
2022/11/23
4100
真正“搞”懂HTTP协议04之搞起来
确认过眼神,看清HTTP协议
在了解HTTP之前,我们需要了解什么是网络通信模型(也就是我们常说的 OSI 模型)
HelloGitHub
2021/05/14
2770
网络基础 HTTP协议之HTTP消息(HTTP Message)
两种类型都包含一起始行(start-line),0或更多个header域, 一暗示header域结束的空行,可能还有一个消息主体
授客
2019/09/11
1.8K0
网络基础 HTTP协议之HTTP消息(HTTP Message)
重温HTTP,你到底做了什么?
HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议。HTTP 是基于 TCP/IP 协议通信协议来传递数据(HTML 文件、图片文件、查询结果等)。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。
纯洁的微笑
2019/10/24
5560
HTTP基础知识
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。
mcxfate
2020/08/02
6430
我所理解的RESTful Web API [Web标准篇]
REST不是一个标准,而是一种软件应用架构风格。基于SOAP的Web服务采用RPC架构,如果说RPC是一种面向操作的架构风格,而REST则是一种面向资源的架构风格。REST是目前业界更为推崇的构建新一代Web服务(或者Web API)的架构风格。由于REST仅仅是一种价格风格,所以它是与具体的技术平台无关的,也就是说采用REST架构的应用未必一定建立在Web之上,所以在正式介绍REST之前,我们先来简单认识一下Web。 目录 一、TCP/IP与HTTP 二、Web资源    
蒋金楠
2018/01/15
1.3K0
我所理解的RESTful Web API [Web标准篇]
HTTP实用指南 - 笔记
HTTP( Hyper Text Transfer Protocol ) 模型如下图所示,是一个应用层(见上图)的协议,基于 TCP 协议,它有如下特点:
TagBug
2023/03/17
9130
HTTP实用指南 - 笔记
HTTP协议之:报文详解
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
全栈程序员站长
2022/09/14
1.1K0
HTTP协议之:报文详解
(建议精读)HTTP灵魂之问,巩固你的 HTTP 知识体系
上回就已经承诺过大家,一定会出 HTTP 的系列文章,今天终于整理完成了。作为一个 web 开发,HTTP 几乎是天天要打交道的东西,但我发现大部分人对 HTTP 只是浅尝辄止,对更多的细节及原理就了解不深了,在面试的时候感觉非常吃力。这篇文章就是为了帮助大家树立完整的 HTTP 知识体系,并达到一定的深度,从容地应对各种灵魂之问,也同时提升自己作为一个 web 开发的专业素养吧。这是本文的思维导图:
桃翁
2020/04/07
1.1K0
(建议精读)HTTP灵魂之问,巩固你的 HTTP 知识体系
HTTP系列-报文结构详解
值得注意的是,在起始行中,每两个部分之间用空格隔开,最后一个部分后面应该接一个换行,严格遵循ABNF语法规范。
李林LiLin
2020/12/09
1.5K0
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。
cxuan
2020/01/17
6110
看完这篇HTTP,跟面试官扯皮就没问题了
HTTP 协议Note
名称含义:HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写。
KaliArch
2018/06/24
4300
HTTP 协议Note
HTTP协议经典面试题整理及答案详解
无论你是Java、PHP开发者,还是运维人员,只要从事互联网行业,面试时都可能被问到HTTP协议相关知识。历时多天的呕心沥血,为你总结了HTTP协议的经典面试题。由于涉及内容比较繁杂不方便记忆,建议收藏起来,时不时看一遍或者面试前突击复习。
万猫学社
2022/04/22
7730
HTTP协议经典面试题整理及答案详解
HTTP协议学习
(3).Web服务器接收并解析请求消息,查找指定的资源,可能访问数据库,构建并返回HTTP响应消息
越陌度阡
2020/11/26
6.8K0
相关推荐
HTTP消息
更多 >
LV.9
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验