用来描述HTTP报文中实体相关信息的首部,我们成为实体首部。
首部 描述Allow Allow 首部字段用于枚举资源所支持的 HTTP 方法的集合。
Location Location 首部指定的是需要将页面重新定向至的地址。一般在响应码为3xx的响应中才会有意义:
- 303 (See Also) 始终引致请求使用 GET 方法,而,而 307 (Temporary Redirect) 和 308 (Permanent Redirect) 则不转变初始请求中的所使用的方法;
- 301 (Permanent Redirect) 和 302 (Found) 在大多数情况下不会转变初始请求中的方法,不过一些比较早的用户代理可能会引发方法的变更;
除了重定向响应之外, 状态码为 201 (Created) 的消息也会带有Location首部。它指向的是新创建的资源的地址。
内容首部
首部 描述Content-Encoding Content-Encoding 是一个实体消息首部,用于对特定媒体类型的数据进行压缩。
Content-Languate Content-Language 用来说明访问者希望采用的语言或语言组合,这样的话用户就可以根据自己偏好的语言来定制不同的内容。
Content-Length 指明发送给接收方的消息主体的大小,即用十进制数字表示的八位元组的数目。
Content-Location 指定的是要返回的数据的地址选项。最主要的用途是用来指定要访问的资源经过内容协商后的结果的URL。
Content-MD5 消息主题的MD5校验和
Content-Range 描述一个数据片段在整个文件中的位置
Content-Type 指示资源的MIME类型 media type
实体缓存首部
实体缓存首部提供与被缓存实体有关的信息,如什么时候或者如何缓存,缓存是否有效等,通过缓存首部可以估计缓存何时失效。
首部 描述ETag 资源的特定版本的标识符。这可以让缓存更高效,并节省带宽,因为如果内容没有改变,Web服务器不需要发送完整的响应。
如果给定URL中的资源更改,则一定要生成新的Etag值。
Expires 该首部包含日期/时间, 即在此时候之后,响应过期。
无效的日期,比如 0, 代表着过去的日期,即该资源已经过期。
Last-Modified 含源头服务器认定的资源做出修改的日期及时间。 它通常被用作一个验证器来判断接收到的或者存储的资源是否彼此一致。
由于精确度比 ETag 要低,所以这是一个备用机制。包含有 If-Modified-Since 或 If-Unmodified-Since 首部的条件请求会使用这个字段。
3.4、消息体 3.4.1、请求消息体
并不是所有的请求都需要body,如:GET,HEAD,DELETE,OPTIONS通产不需要body。
请求body可以分为两类:
Single-resource bodies,由单个文件组成。该类型 body 由两个 header 定义: Content-Type 和 Content-Length;
,由多部分body组成,每一部分包含不同的信息位。通常是和 HTML Forms 连系在一起。
3.4.2、响应消息体并不是所有的响应都有body,如 201 或 204状态码的响应一般不会有body。
响应body可以分为三类:
Single-resource bodies,由已知长度的单个文件组成。该类型 body 由两个 header 定义:Content-Type 和 Content-Length;
Single-resource bodies,由未知长度的单个文件组成,通过将 Transfer-Encoding 设置为 chunked 来使用 chunks 编码;
Multiple-resource bodies,由多部分 body 组成,每部分包含不同的信息段。但这是比较少见的。
3.5、状态行响应消息的第一行是状态行,由协议版本,数字状态代码及其关联的文本短语组成,每个元素由SP字符分隔。 除最后的CRLF序列外,不允许CR或LF。
状态行格式:
Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF 3.5.1、Status-Code状态码和Reason-Phrase状态描述状态码是3位数的整数结果代码。
状态码的第一位数字定义响应的类别。 后两位数字没有任何分类作用。可以分为5个类别:
1xx:信息状态码,收到请求,继续进行;
2xx:请求成功接收;
3xx:重定向,必须采取进一步措施才能完成请求;
4xx:客户端错误,请求包含错误语法,或者不能被完成;
5xx:服务器错误,服务器无法完成看似有效的请求;