哪一个是消息,哪个是HTTP术语中的实体?

amn*_*amn 6 http

我试图更好地理解HTTP内部结构,并且在规范中经常提到"实体"和"消息",奇怪的是,如果没有正确的解释,信不信由你.根据我收集的内容,即使在分配请求/响应链和/或传输编码碎片规则时,也会识别内容本身,而另一个则识别单个HTTP请求的内容 - 即标题后面的内容以CRLF结束.我的问题是我无法弄清楚究竟是哪一个.

Gum*_*mbo 8

HTTP消息或者是一个请求响应:

  HTTP-message   = Request | Response     ; HTTP/1.1 messages
Run Code Online (Sandbox Code Playgroud)

HTTP消息具有零个或多个消息头 ⁠s并且可以具有消息体:

   generic-message = start-line
                     *(message-header CRLF)
                     CRLF
                     [ message-body ]
Run Code Online (Sandbox Code Playgroud)

因此,并非每条HTTP消息都有消息体.但如果它有一个消息体,那么它也是实体体:

  message-body = entity-body
               | <entity-body encoded as per Transfer-Encoding>
Run Code Online (Sandbox Code Playgroud)

简而言之:消息是整个HTTP请求或响应.实体是消息的主体(如果有的话)及其对应的实体头字段.

  • @amn:实体在消息中。实体是*entity-header* ⁠s 和*entity-body*(*message-body*)的总和。一些 *message-header* ⁠s 描述消息,一些描述实体。例如,*Date* 是一个 *message-header*(它描述了消息),而 *Content-Type* 是一个 *entity-header*(它描述了实体)。 (2认同)