6.4. 内容
HTTP 报文常以完整或部分表示作为报文的 内容 进行传输:在头部部分之后发送的一串八位组,按报文分帧划定。
此内容的抽象定义反映在内容从报文分帧中提取之后的数据。例如,一个 HTTP/1.1 的消息体(见 第 6 节)可能由使用分块传输编码编码的数据流组成——数据块序列、一个零长度块和一个尾部部分——而该消息的内容则仅包括在传输编码解码之后的数据流;它不包括块长度、分块分帧语法,也不包括尾字段(见 第 6.5 节)。
6.4.1. 内容语义
请求中内容的目的由方法语义定义(见 第 9 节)。
在响应中,内容的目的由请求方法、响应状态码(见 第 15 节)以及描述该内容的响应字段来定义。例如,对 GET(见 第 9.3.1 节) 的 200 (OK) 响应的内容表示在报文发生时刻(见 第 6.6.1 节)观察到的 目标资源 的当前状态,而在对 POST 的响应中相同状态码的内容可能表示处理结果或应用处理后目标资源的新状态。
对 GET 的 206 (Partial Content) 响应的内容包含所选表示的单个部分或包含该表示多个部分的多部分消息体,如 第 15.3.7 节 所述。
带有错误状态码的响应消息通常包含表示错误条件的内容,使得内容描述错误状态以及建议的解决步骤。
对 CONNECT 请求方法的 2xx (Successful) 响应会将连接切换为隧道模式,而不是包含内容(见 第 9.3.6 节)。
所有 1xx (Informational)、204 (No Content) 和 304 (Not Modified) 响应均不包含内容。
所有其他响应都包含内容,尽管该内容可能长度为零。
6.4.2. 标识内容
当完整或部分表示作为报文内容被传输时,发送方提供或接收方确定与该特定表示对应的资源标识符通常是可取的。例如,请求某资源的客户端可能希望获得特定于返回内容的标识符(例如“20210720T1711 时 Laguna Beach 的天气报告”)。对于来自预期随时间变化表示的资源的内容,这对共享或收藏链接很有用。
对于请求报文:
- 如果请求含有 Content-Location 头字段,则发送方断言该内容是由 Content-Location 字段值标识的资源的一个表示。然而,除非可以通过其他手段(本规范未定义)验证,否则该断言无法被信任。该信息仍可能对修订历史链接有用。
- 否则,HTTP 对该内容不提供标识,但更具体的标识符可能在内容本身中提供。
对于响应报文,按以下规则顺序检查直到找到匹配项:
- 如果请求方法是 HEAD 或响应状态码是 204 (No Content) 或 304 (Not Modified),则响应中无内容。
- 如果请求方法是 GET 且响应状态码是 200 (OK),则内容是 目标资源 的一个表示(见 第 7.1 节)。
- 如果请求方法是 GET 且响应状态码是 203 (Non-Authoritative Information),则内容是由中间件提供的可能被修改或增强的 目标资源 的表示。
- 如果请求方法是 GET 且响应状态码是 206 (Partial Content),则内容是目标资源表示的一个或多个部分。
- 如果响应具有 Content-Location 头字段且其字段值引用与目标 URI 相同的 URI,则内容是目标资源的一个表示。
- 如果响应具有 Content-Location 头字段且其字段值引用与目标 URI 不同的 URI,则发送方断言该内容是由 Content-Location 字段值标识的资源的一个表示。然而,除非可以通过其他手段验证,否则该断言无法被信任。
- 否则,HTTP 对该内容不提供标识,但更具体的标识符可能在内容本身中提供。
5.6.5. 注释
在某些 HTTP 字段中可以通过用圆括号将注释文本括起来来包含注释。注释仅允许出现在字段值定义中包含 "comment" 的字段中。