本文概述
如果不受请求方法或响应状态代码的限制, 则通过HTTP请求和响应消息传输实体。实体用于由实体头字段和实体头组成, 尽管某些响应仅包括实体头。
在本节中, 发送者和接收者都引用客户端或服务器, 这取决于谁接收实体。
实体标题字段
实体标题字段用于定义有关实体主体的元信息。如果不存在body, 则entity-header字段定义有关由请求标识的资源的元信息。这些元信息中的一些是可选的。本规范的某些部分可能需要某些内容。
句法
entity-header = Allow
| Content-Encoding
| Content-Language
| Content-Length
| Content-Location
| Content-MD5
| Content-Range
| Content-Type
| Expires
| Last-Modified
| extension-header
extension-header = message-header
扩展头机制用于允许其他实体头字段, 无需定义协议即可对其进行定义, 但是不能假定收件人可以识别这些字段。收件人将忽略无法识别的标头字段, 并且必须由透明代理转发。
实体主体
如果有任何实体, 它将以如下所述的格式发送HTTP请求或HTTP响应。实体标题字段定义编码。
句法
entity-body = *OCTET
存在消息主体时, 实体主体将仅出现在消息中。实体主体是通过对消息主体进行解码而获得的, 该主体主体可以通过解码可能已应用的任何传输编码来确保正确正确地传输消息。
类型
当消息中包含实体主体时, 标头字段Content-Type和Content-Encoding确定该主体的数据类型。这些用于定义两层有序编码模型:
句法
entity-body := Content-Encoding( Content-Type( data ) )
Content-Type用于指定基础数据的媒体类型。 Content-Encoding指示应用于数据的任何其他内容编码, 通常用于数据压缩(这是请求的资源属性)。
任何包含实体主体的HTTP / 1.1消息都应该包含定义该主体媒体类型的Content-Type头字段。通过检查其内容或用于标识资源的URI扩展名来确定媒体类型。如果媒体类型仍然未知, 则接收者应将其视为“应用程序/八位字节流”类型。
实体长度
实体长度的消息是在应用任何传输编码之前消息主体的长度。