HTTP消息 – 作者:无名草talent

HTTP消息

HTTP消息是服务器和客户端之间交换数据的方式

有两种类型的消息︰ 请求(requests)–由客户端发送用来触发一个服务器上的动作;

响应(responses)–来自服务器的应答。

HTTP请求响应具有相似结构,由以下部分组成

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

2.一个可选的HTTP头集合指明请求或描述消息正文。

3.一个空行指示所有关于请求的元数据已经发送完毕。

4.一个可选的包含请求相关数据的正文 (比如HTML表单内容), 或者响应相关的文档。 正文的大小有起始行的HTTP头来指定。

起始行HTTP消息中的HTTP统称请求头有效负载称为消息正文.

1624276378_60d07d9a0c126677fefd1.png!small?1624276377446

HTTP请求

HTTP请求是由客户端发出的消息,用来使服务器执行动作。

起始行

1.一个HTTP 方法,一个动词 (像 GET,PSOT或PUT) 或者一个名词 (像HEAD或者OPTIONS) , 描述要执行的动作。

2.请求目标 (request target),通常是一个 URL,或者是协议、端口和域名的绝对路径,通常以请求的环境为特征。请求的格式因不同的 HTTP 方法而异。

3.HTTP 版本 (HTTP version),定义了剩余报文的结构,作为对期望的响应版本的指示符。

Headers

来自请求的 HTTP headers 遵循和 HTTP header 相同的基本结构:不区分大小写的字符串,紧跟着的冒号 (‘:’) 和一个结构取决于 header 的值。

整个 header(包括值)由一行组成,这一行可以相当长。

有许多请求头可用,它们可以分为几组:

General headers,例如 Via,适用于整个报文。

Request headers,例如 User-Agent,Accept-Type,通过进一步的定义(例如 Accept-Language),或者给定上下文(例如 Referer),或者进行有条件的限制 (例如 If-None) 来修改请求。

Entity headers,例如 Content-Length,适用于请求的 body。显然,如果请求中没有任何 body,则不会发送这样的头文件。

1624362359_60d1cd77db3895bbc5123.png!small?1624362360094

body

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

Body 大致可分为两类:

Single-resource bodies,由一个单文件组成。该类型 body 由两个 header 定义: Content-Type和 Content-Length.

Multiple-resource bodies,由多部分 body 组成,每一部分包含不同的信息位。通常是和  HTML Forms 连系在一起。

HTTP响应

状态行

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

1.协议版本,通常为 HTTP/1.1。

2.状态码 (status code),表明请求是成功或失败。常见的状态码是 200404,或 302

3.状态文本 (status text)。一个简短的,纯粹的信息,通过状态码的文本描述,帮助人们理解该 HTTP 消息。

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

Headers

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

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

General headers,例如 Via,适用于整个报文。

Response headers,例如 Vary和 Accept-Ranges,提供其它不符合状态行的关于服务器的信息。

Entity headers,例如 Content-Length,适用于请求的 body。显然,如果请求中没有任何 body,则不会发送这样的头文件。

1624362998_60d1cff607b3e8ea2a098.png!small?1624362998240

Body

响应的最后一部分是 body。不是所有的响应都有 body:具有状态码 (如 201或 204) 的响应,通常不会有 body。

Body 大致可分为三类:

Single-resource bodies,由已知长度的单个文件组成。该类型 body 由两个 header 定义:Content-Type和 Content-Length。

Single-resource bodies,由未知长度的单个文件组成,通过将 Transfer-Encoding设置为 chunked 来使用 chunks 编码。

Multiple-resource bodies,由多部分 body 组成,每部分包含不同的信息段。但这是比较少见的。

来源:freebuf.com 2021-06-22 19:59:43 by: 无名草talent

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论