我想没有必要指定内容类型。这些数据在位级别是什么样的?如果您正在查看 HTTP 数据包中的 1 和 0,那么什么规范决定了可以放在这里的内容。
您正在寻找 HTTP 规范本身,第 7 节。确实,它的工作原理与您假设的一样:
7 实体
如果不受请求方法或响应状态代码的限制,请求和响应消息可以传输实体。实体由实体头字段和实体主体组成,尽管某些响应仅包括实体头。
在本节中,发送者和接收者都指客户端或服务器,具体取决于谁发送和接收实体。
在本节中,发送者和接收者都指客户端或服务器,具体取决于谁发送和接收实体。
7.1 实体头字段
实体标头字段定义有关实体主体的元信息,或者,如果不存在主体,则定义有关请求标识的资源的元信息。其中一些元信息是可选的;本规范的某些部分可能需要一些。
entity-header = Allow ; Section 14.7
| Content-Encoding ; Section 14.11
| Content-Language ; Section 14.12
| Content-Length ; Section 14.13
| Content-Location ; Section 14.14
| Content-MD5 ; Section 14.15
| Content-Range ; Section 14.16
| Content-Type ; Section 14.17
| Expires ; Section 14.21
| Last-Modified ; Section 14.29
| extension-header
extension-header = message-header
扩展头机制允许在不改变协议的情况下定义额外的实体头字段,但不能假设这些字段可以被接收者识别。无法识别的头域应该被接收者忽略并且必须被透明代理转发。
7.2 实体
与 HTTP 请求或响应一起发送的实体主体(如果有)采用实体标头字段定义的格式和编码。
entity-body = *OCTET
如第 4.3 节所述,仅当存在消息主体时,实体主体才会出现在消息中。实体主体是通过对可能已应用的任何传输编码进行解码从消息主体中获得的,以确保消息的安全和正确传输。
7.2.1 类型
当消息中包含实体主体时,该主体的数据类型由标头字段 Content-Type 和 Content-Encoding 确定。这些定义了一个两层的有序编码模型:
entity-body := Content-Encoding( Content-Type( data ) )
Content-Type 指定底层数据的媒体类型。Content-Encoding 可用于指示应用于数据的任何附加内容编码,通常用于数据压缩,这是所请求资源的属性。没有默认编码。
任何包含实体主体的 HTTP/1.1 消息都应该包含定义该主体的媒体类型的 Content-Type 头字段。当且仅当媒体类型不是由 Content-Type 字段给出时,接收者可以尝试通过检查其内容和/或用于识别资源的 URI 的名称扩展来猜测媒体类型。如果媒体类型仍然未知,接收者应该将其视为类型“application/octet-stream”。
7.2.2 实体长度
消息的实体长度是在应用任何传输编码之前消息正文的长度。第 4.4 节定义了如何确定消息体的传输长度。