在Http通信过程中,不管是请求还是响应,首部都起到了传递额外重要信息的作用。
首部格式为:首部字段名:字段值
一个首部字段名可以有多个值,用逗号隔开。
当首部出现了首部字段名一样的情况,因为没有明确的规定,所以这个是根据浏览器自己的规则来的,有的读取同样名字的第一个首部,有的读取最后的同样名字的首部。
Http首部根据使用不同,分为了4中类型:
- 通用首部字段:请求和响应的首部都会用
- 请求首部字段:客户端请求的时候使用的首部,补充了请求的附加内容,客户端信息,响应内容相关优先级等信息
- 响应首部字段:服务器想客户端返回响应报文时使用的首部,补充了响应的附加内容,也会要求客户端副价额外的内容信息。
- 实体首部字段:针对请求报文和响应报文实体部分使用的首部,补充了资源内容更新时间等与实体有关的信息。
通用首部:
请求首部:
响应首部:
实体首部:
在HTTP通信中还用到了Cookie、Set-Cookie、Content-Disposition等在其他RFC中定义的首部字段。
HTTP首部字段分为缓存代理和非缓存代理。
- 端到端首部(End-to-End Header):分类在此类别中的首部会转发给请求或者响应的最终接受目标(转发、代理等),并且保存在由缓存生成的响应中,规定他必须被转发。
- 逐条首部(Hop-by-Hop Header):分类在此类别中的首部单次转发有效,会因通过缓存或代理而不再转发,Http1.1如果要使用,需要提供Connection首部字段。
下面列举了一些逐条首部:
- Connection
- Keep-Alive
- Proxy-Authenticate
- Proxy-Authorization
- Trailer
- TE
- Transfer-Encoding
- Upgrade