HTTP消息
HTTP消息是服务器和客户端之间交换数据的方式。
有两种类型的消息︰ 请求(requests)–由客户端发送用来触发一个服务器上的动作;
响应(responses)–来自服务器的应答。
HTTP请求和响应具有相似的结构,由以下部分组成︰
1.,一行起始行用于描述要执行的请求,或者是对应的状态,成功或失败。这个起始行总是单行的。
2.一个可选的HTTP头集合指明请求或描述消息正文。
3.一个空行指示所有关于请求的元数据已经发送完毕。
4.一个可选的包含请求相关数据的正文 (比如HTML表单内容), 或者响应相关的文档。 正文的大小有起始行的HTTP头来指定。
起始行和HTTP消息中的HTTP头统称为请求头,而其有效负载被称为消息正文.
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,则不会发送这样的头文件。
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),表明请求是成功或失败。常见的状态码是 200,404,或 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,则不会发送这样的头文件。
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
请登录后发表评论
注册