我正在学习HTTP。在我的POST请求中,我使用XML或JSON格式来封装请求有效负载。我想知道的是请求有效负载和请求主体是否意味着同样的事情?
我学习HTTP。在我的POST请求中,我使用XML或JSON格式将请求有效负载放入请求体中。我想知道请求有效负载和请求体是否指的是同一件事情。定义:payload指包或文件中除了传输时附加的所有头部和描述性元数据之外的“实际数据”。在网络数据包中,头部会附加到有效载荷上以进行传输,然后在目标处丢弃。
编辑:在HTTP协议中,一个http数据包包括http头和http负载。因此,http数据包的负载部分根据请求类型(例如POST vs GET)可能有或没有主体。因此负载和主体不是同一件事情。
负载是“包装”正文的内容。
负载是指携带的东西。一个送报员的负载是一堆报纸,而HTTP POST请求的负载就是在“body”中传输的任何内容。
GET /abc \n Content-Length:3 \n\n 123
—— 嗯,有效载荷不就是 123
吗?也就是正文? - KajMagnus +--------+ +----+
complete representation: |metadata|, |data|
+--------+ +----+
\ \
+--------+ +-------+
partial representation 1: |metadata|, |content|
partial representation 2: |metadata|, |content|
… | | | |
partial representation N: |metadata|, |content|
+--------+ +-------+
/ /
+-----------+ +----+
message 1: start line, |field lines|, |body|
message 2: start line, |field lines|, |body|
… | | | |
message N: start line, |field lines|, |body|
+-----------+ +----+
RFC 9110: HTTP语义学 定义了术语表示(representation):
3.2. 表示
“表示”是指旨在反映给定资源的过去、当前或期望状态的信息,以可通过协议轻松传输的格式呈现。表示由一组表示元数据和一个可能无限制的表示数据流组成(第8节)。
请注意,该定义独立于HTTP版本,因为它是关于语义的。
RFC 9112: HTTP/1.1 定义了术语消息(message):
请注意,定义取决于HTTP的版本,因为它涉及语法。 RFC 9110:HTTP语义定义了术语“内容”:2.1. Message Format
An HTTP/1.1 message consists of a start-line followed by a CRLF and a sequence of octets in a format similar to the Internet Message Format [RFC5322]: zero or more header field lines (collectively referred to as the "headers" or the "header section"), an empty line indicating the end of the header section, and an optional message body.
HTTP-message = start-line CRLF *( field-line CRLF ) CRLF [ message-body ]
HTTP消息通常作为消息“内容”传输完整或部分表示:一个八位组流在头部段之后发送,由消息框架界定。
这个抽象的内容定义反映了从消息框架中提取出来的数据。例如,HTTP/1.1消息体([HTTP/1.1]第6节)可能由使用分块传输编码的数据流组成——一系列数据块、一个零长度块和一个尾随部分——而同一消息的内容仅包括传输编码解码后的数据流;它不包括块长度、分块框架语法或尾随字段(第6.5节)。
注意:有些字段名带有“Content-”前缀。这是一种非正式的约定;虽然其中一些字段引用上述消息的内容,但其他字段则限定于所选表示(第3.2节)。请参见各个字段的定义以消除歧义。
RFC 9110: HTTP语义学将先前RFC中使用的负载一词替换为内容:
B.3. 与RFC 7231的变化
[...]
术语"负载"和"负载正文"已被替换为"内容",以更好地与其在其他地方(例如字段名称)的用法保持一致,并避免与HTTP/2和HTTP/3中的帧负载混淆。(第6.4节)
头部标识发送数据包的源和目的地,而实际数据即主体被称为有效载荷