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

HTTP消息

作者头像
Dreamy.TZK
发布2020-08-10 11:13:22
8200
发布2020-08-10 11:13:22
举报
文章被收录于专栏:小康的自留地小康的自留地

HTTP报文

HTTP报文是什么

HTTP报文,又称HTTP消息,是服务器和客户端之间交换数据的方式。有两种类型的消息:请求,由客户端发送用来触妓一个服务器上的动作;响应,来自服务器的应答。

HTTP消息由采用ASCII编码的多行文本构成。在HTTP/1.1及早期版本中,这些消息通过连接公开地发送。在HTTP/2中,为了优化和性能方面的改进,曾经可人工阅读的消息被分到多个HTTP帧中。

HTTP请求报文

image-20200808211039326
image-20200808211039326

HTTP响应报文

image-20200808211148586
image-20200808211148586

HTTP消息

HTTP消息结构

  1. start line:一行起始行用于描述要执行的请求,或者是对应的状态,成功或失败。这个起始行总是单行的。
  2. HTTP headers:一个可选的HTTP头集合指明请求或描述消息正文。
  3. empty line:-个空行指示所有美于请求的元数据已经发送完毕。
  4. body:一个可选的包含请求相美数据的正文(比如HTML表单内容)或者响应相美的文档。正文的大小有起始行的HTTP头来指定。

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

请求消息与响应消息

image-20200808211603763
image-20200808211603763

请求消息

起始行

起始行包含三个元素

  1. 请求方法
  2. 请求地址
  3. HTTP版本
image-20200808213038063
image-20200808213038063

请求方法

请求方法

描述

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类型。
image-20200808213632284
image-20200808213632284
image-20200808214223208
image-20200808214223208

请求主体

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

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

请求主体大致可分为两类

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

响应消息

状态行

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

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

响应头

响应头允许服务器端向客户端传递附加信息。响应头由名称(不区分大小写)后跟一个冒号“:”,冒号后跟具体的值(不带换行符)组成

根据不同上下文,可将响应头分为

  1. 通用头:同时适用于请求和响应消息,但与最终消息主体中传输的数据无关的消息头。
  2. 响应头:包含有关响应的补充信息,如其位置或服务器本身(名称和版本等)的消息头。
  3. 实体头:包含有关实体主体的更多信息,比如主体长( Content- Length)度或其MIME类型。
image-20200808221554242
image-20200808221554242
image-20200808222035731
image-20200808222035731

响应主体

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

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

状态码

信息响应

状态码

描述

100 Continue

这个临时响应表明,迄今为止的所有内容都是可行的,客户端应该继续请求,如果已经完成,则忽略它

101 Switching Protocol

该代码是响应客户端的 Upgrade标头发送的,井且指示服务器也正在切换的协议

102 Processing

此代码表示服务器已到井正在处理该请求,但没有响应可用

成功响应

状态码

描述

200 OK

请求成功

201 Created

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

202 Accepted

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

203 Non-authoritative Information

服务器已成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确定集合,而是来自本地或者第三方的拷贝

204 No Content

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

205 Reset Content

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

206 Partial Content

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

重定向

状态码

描述

300 Multiple Choice

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

301 Moved Permanently

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

302 Found

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

303 See Other

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

304 Not Modified

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

客户端响应

状态码

描述

400 Bad Request

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

401 Unauthorized

当前请求需要用户验证

403 Forbidden

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

404 Not Found

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

405 Method Not Allowed

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

服务端响应

状态码

描述

500 Internal Server Error

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

501 Not Implemented

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

502 Bad Gateway

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

503 Service Unavailable

服务器没有备好处理请求

504 Gateway Timeout

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

505 HTTP Version Not Supported

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

MIME消息

MIME类型全称为 Multipurpose Internet Mail Extensions,被译为多用途 Internet邮件扩展类型,是一种标准化的方式来表示文档的性质和格式。

浏览器通常使用MIME类型(而不是文件扩展名)来确定如何处理文档;因此服务器设置正确以将正确的MIME类型附加到响应对象的头部是非常重要的。

类型

描述

经典实例

text

表明文件是普通文本

text/plain,text/html

image

表明是某种图像

image/png

audio

标明是某种音频文件

audio/webm

video

标明是某种视频文件

video/webm

application

表明是某种二进制数据

application/octet-stream

HTTP1.x的缺点

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

  • 消息头不像消息主体一样会被压缩
  • 两个报文之间的header通常非常相似,但它们仍然在连接中重复传输。
  • 无法复用。当在同一个服务器打开几个连接时,TCP热连接比冷连接更加有效。 HTTP/2.0引入了ー个额外的步骤,它将HTTP/1.x消息分成帧并嵌入到流(stream)中
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HTTP报文
    • HTTP报文是什么
      • HTTP请求报文
        • HTTP响应报文
        • HTTP消息
          • HTTP消息结构
            • 请求消息与响应消息
            • 请求消息
              • 起始行
                • 请求方法
                  • 请求头
                    • 请求主体
                    • 响应消息
                      • 状态行
                        • 响应头
                          • 响应主体
                          • 状态码
                            • 信息响应
                              • 成功响应
                                • 重定向
                                  • 客户端响应
                                    • 服务端响应
                                    • MIME消息
                                    • HTTP1.x的缺点
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档