6.4. 内容
HTTP 消息通常将完整或部分表示作为消息 内容传输:由消息分帧界定、在头部部分之后发送的八位字节流 。
此内容的抽象定义反映从 消息分帧中提取后的数据。例如,HTTP/1.1 消息主体([HTTP/1.1] 的第 6 节) 可能由使用分块传输编码进行编码的数据流组成——一系列 数据块、一个零长度块和一个尾部部分——而 同一消息的内容仅包括传输编码被 解码后的数据流;它不包括块长度、分块分帧语法或尾部 字段(第 6.5 节)。
6.4.1. 内容语义
请求中内容的用途由方法语义(第 9 节)定义。
在响应中,内容的用途由请求方法、响应 状态码(第 15 节)以及 描述该内容的响应字段定义。例如,对 GET(第 9.3.1 节)的 200 (OK) 响应的内容表示 在消息生成日期(第 6.6.1 节)时观察到的 目标资源当前状态,而 对 POST 的相同状态码响应的内容则可能表示处理 结果或应用处理后目标资源的新状态。
对 GET 的 206(部分内容) 响应的内容包含选定表示的单个部分,或者 包含该表示多个部分的多部分消息主体,如 第 15.3.7 节所述。
具有错误状态码的响应消息通常包含表示 错误状况的内容,因此该内容会描述错误状态以及建议采取哪些步骤 来解决该问题。
所有其他响应都包含内容,尽管该内容的长度可能为零 。
6.4.2. 标识内容
当完整或部分表示作为消息内容传输时,通常 希望发送方提供,或者接收方确定,与该特定表示对应的 资源标识符。例如, 对“当前天气 报告”资源发出 GET 请求的客户端,可能希望得到专用于返回内容的标识符(例如“拉古纳海滩 20210720T1711 的天气报告”)。这对于分享或 为预期其表示会随时间变化的资源内容添加书签 很有用。
对于请求消息:
- 如果请求具有 Content-Location 头字段,则发送方断言 该内容是由 Content-Location 字段值所标识资源的表示。但是,除非可以通过其他方式验证 (本规范未定义),否则不能信任这种断言。 此信息仍可能对修订历史链接有用。
- 否则,HTTP 不标识该内容,但更具体的标识符 可能由内容本身提供。
对于响应消息,按顺序应用以下规则,直到找到 匹配项:
- 如果请求方法是 HEAD,或者响应状态码是 204(无内容)或 304(未修改),则响应中没有内容 。
- 如果请求方法是 GET 且响应状态码是 200 (OK),则内容是 目标 资源的表示(第 7.1 节)。
- 如果请求方法是 GET 且响应状态码是 203(非权威信息),则 内容是由中间方提供的目标资源的可能经过修改或增强的表示 。
- 如果请求方法是 GET 且响应状态码是 206(部分内容),则内容是 目标资源表示的一个或多个部分。
- 如果响应具有 Content-Location 头字段,并且其字段值是 对与目标 URI 相同 URI 的引用,则内容是 目标资源的表示。
- 如果响应具有 Content-Location 头字段,并且其字段值是 对不同于目标 URI 的 URI 的引用,则发送方断言 该内容是由 Content-Location 字段值所标识资源的表示。但是,除非可以通过其他方式验证 (本规范未定义),否则不能信任这种断言。
- 否则,HTTP 不标识该内容,但更具体的标识符 可能由内容本身提供。
5.6.5. 注释
某些 HTTP 字段可以通过用圆括号包围 注释文本来包含注释。只有字段值定义中包含 “comment”的字段才允许使用注释。