消息类型
HTTP消息由从客户端到服务器的请求消息和从服务器到客户端的响应消息两部分组成。
HTTP-message=Request|Response;HTTP/1.1
消息头部
HTTP头部包括常用头部、请求头部、响应头部和实体头部
- 不同域名的头部被接收的顺序是不重要的。一般是先发送常用头部,然后是请求头部或响应头部,最后以实体头部结束。
- 当使用同一个域名的多个消息头部可能会出现在一些消息中。不改变消息的语义,把相同名的多个头部结合成
key:value键值对的形式。代理在转发这类消息的时候,不能改变顺序。
消息主体
HTTP消息的消息主体是用来放请求和响应的实体主体的。当传输编码头部有值也就是有传输编码的时候,把传输编码应用于实体主体,这个时候消息主体和实体主体才会有区别,其他情况下,消息主体和实体主体相同。
- 什么时候消息主体允许出现在消息中,根据不同请求和响应来决定。
- 请求:
- 消息主体是否存在和请求中是否有消息头部是否存在内容长度或者传输编码有关。
- 请求的方法如果不支持,消息主体也不存在。
- 响应:
- 所有的1XX、204和304的响应都不包含消息主题。所有其他的响应都必须包含消息主体,即使它的长度可能为0。
消息长度
- 当消息主题出现在消息中,当实体主体在应用了传输编码后,一条消息的传输长度是消息主体的长度。
- 当内容长度出现在一个有消息主体的消息里,它的值必须精确匹配消息主体的字节数。
HTTP/1.1用户代理(user agent)在接收了一个无效的长度时,必须能通知用户。
常用头部
- 有一些头部适合请求消息也适用于响应消息,但是这些头部并不适合传输实体。这些头部只能应用于传输消息。
- 不能识别的头部会被当做实体的头部。
总结
- 分析
HTTP消息之后,对消息主体有了更多的理解。
- 欢迎点赞讨论。