关于HTTP规范中使用的实体的混淆

时间:2012-12-10 20:24:58

标签: http web http-headers webserver

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

具体来说,我不明白规范在entity-headers和response / request / general-headers之间的区别。例如,阅读Header Field Definitions部分,AllowExpiresLast-Modified等标题被归类为“实体标题”。这究竟意味着什么?我猜它们适用于“实体 - 身体”,但实体主体和消息体之间的区别是什么?

我很欣赏有关实体的任何说明以及它们在HTTP请求/响应中的适用位置。

2 个答案:

答案 0 :(得分:4)

消息是最通用的术语,指的是整个HTTP message,包括起始行消息标题字段和 message-body (可能为空)。

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

这种传输编码的一个例子是chunked transfer coding,其中实体主体以块的形式传输,例如:

HTTP/1.0 OK 200
Transfer-Encoding: chunked

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

此处 message-body 是:

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

但是 entity-body 是带有解码 chunked 编码的 message-body

This is a chunked message.

答案 1 :(得分:0)

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

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

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

实体是http请求或响应中的可选有效内容。部分标题用于描述它。