【发布时间】:2014-03-30 23:03:32
【问题描述】:
我正在学习 HTTP。我在我的 POST 请求中附上了 XML 或 JSON 格式的请求负载。我想知道的是请求有效负载和请求正文是否意味着相同的事情?
【问题讨论】:
-
请点击对您最有帮助的答案左侧的复选标记来关闭您的问题
-
最有帮助的答案不一定完全满足问题本身。
我正在学习 HTTP。我在我的 POST 请求中附上了 XML 或 JSON 格式的请求负载。我想知道的是请求有效负载和请求正文是否意味着相同的事情?
【问题讨论】:
定义:有效负载:数据包或文件中的“实际数据”减去所有附加的用于传输的标头并减去所有描述性元数据。在网络数据包中,标头附加到有效负载以进行传输,然后在目的地丢弃。
编辑:在 Http 协议中,http 数据包具有 http 标头和 http 有效负载。因此,http 数据包的有效负载部分可能有也可能没有正文,具体取决于请求的类型(例如 POST 与 GET)。所以payload和body不是一回事。
【讨论】:
有效负载是主体的“包装器”
有效载荷是一个人携带的东西。报童的有效负载是一堆报纸,而 HTTP POST 请求的有效负载是“正文”中的任何内容。
【讨论】:
GET /abc \n Content-Length:3 \n\n 123 — 嗯不是负载 123 == 正文?
RFC 7230 的HTTP client/server messaging:超文本传输协议 (HTTP/1.1):消息语法和路由 区分 有效负载正文 和 消息正文(用于传输的编码有效负载正文),以及表示元数据和资源元数据之间的区别(有关资源的信息,并非特定于所提供的表示) :
大多数 HTTP 通信都包含一个检索请求 (GET),用于表示由 URI 标识的某些资源。在最简单的情况下,这可以通过用户代理 (UA) 和源服务器 (O) 之间的单个双向连接 (===) 来实现。
request > UA ======================================= O < response
客户端以请求消息的形式向服务器发送 HTTP 请求,请求行开头包含方法、URI 和协议版本(第 3.1.1 节),后跟包含请求修饰符的标头字段、客户端信息和表示元数据(第 3.2 节),一个空行指示标头部分的结束,最后是包含有效负载正文的消息正文(如果有,第 3.3 节)。
服务器通过发送一个或多个 HTTP 响应消息来响应客户端的请求,每个响应消息都以包含协议版本、成功或错误代码和文本原因短语(第 3.1.2 节)的状态行开头,可能跟在后面由包含服务器信息、资源元数据和表示元数据(第 3.2 节)的标头字段,指示标头部分结束的空行,最后是 包含有效负载正文的消息正文(如果有,第 3.3 节)。
HTTP message format 然后给出了请求消息和响应消息的通用结构:
Start line<CR><LF>
Header fields<CR><LF>
<CR><LF>
Message body (optional)
其中
RFC 7231 的abstract:超文本传输协议 (HTTP/1.1):语义和内容 给出了有效负载的组件:
超文本传输协议 (HTTP) 是用于分布式、协作式超文本信息系统的无状态应用程序级协议。本文档定义了 HTTP/1.1 消息的语义,由请求方法、请求标头字段、响应状态代码和响应标头字段以及消息的有效负载(元数据和正文内容)表示,以及内容协商机制。
因此我们可以得出结论,消息中包含的有效负载由以下部分组成:
【讨论】:
Header 标识发送数据包的来源和目的地,而实际数据,即 Body 被称为 Payload
【讨论】:
HTTP 消息的起始行和 HTTP 标头统称为请求的标头,而其负载称为正文
所以是的,它们是一样的。
从https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages得到这个
【讨论】: