1

我正在阅读 HTTP 规范,但我无法弄清楚“实体”到底是什么。我阅读了“什么是 HTTP 实体”的答案,但我仍然感到困惑。

具体来说,我不明白规范在实体标头和响应/请求/通用标头之间的区别。例如,阅读Header Field Definitions部分,诸如AllowExpiresLast-Modified的标题被归类为“实体标题”。这实际上是什么意思?我猜它们适用于“实体主体”,但是实体主体和消息主体之间有什么区别?

对于实体以及它们在 HTTP 请求/响应中的位置,我将不胜感激。

4

2 回答 2

4

message是最通用的术语,指的是整个HTTP 消息,包括start-linemessage-header字段和message-body(可能为空)。

消息的实体是要传输的有效负载。这可以与message-body相同,但如果对entity应用了传输编码,则通过解码任何传输编码从message-body获得entity-body 。

这种传输编码的一个示例是分块传输编码,其中实体主体以块的形式传输,例如:

HTTP/1.0 OK 200
Transfer-Encoding: chunked

9
This is a
C
 chunked mess
4
age.
0
‍

这里的消息体是:

9
This is a
C
 chunked mess
4
age.
0
‍

实体主体是具有解码分块编码的消息主体:

This is a chunked message.
于 2012-12-10T23:20:49.773 回答
0

案例 1. 您在 http 请求中上传 3 个文件。这 3 个文件是 3 个实体。他们每个人都有自己Content-Type的指示它是什么类型的文件。

案例 2. 您正在查看一个网页。浏览器通过后台的 http 响应下载了一个 html 文件作为实体。该文件可能会不断更新。因此,您昨天获得的实体可能与您今天获得的不同。

案例 3. 你有一个304 Not Modified. 没有实体被传送。

实体是 http 请求或响应中的可选负载。部分标题用于描述它。

于 2013-12-24T08:01:46.143 回答