📜  HTTP实体

📅  最后修改于: 2021-01-03 03:07:42             🧑  作者: Mango

HTTP实体

如果不受请求方法或响应状态代码的限制,则通过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头字段。当且仅当Content-Type字段未指定媒体类型时,接收方才可以尝试猜测使用媒体内容的检查或URI的扩展名(用于标识资源)来确定媒体类型。如果媒体类型仍然未知,则接收者应将其视为“应用程序/八位字节流”类型。

实体长度

实体长度的消息是在应用任何传输编码之前消息主体的长度。