本篇博客主要详细讲一下HTTP协议的常用头部字段,当然还是将其分为请求头和响应头进行阐述。下方是报文头每个字段的格式,首先是头部字段的名称,如Accept;冒号后方紧跟的是该字段名所对应的值,每个值之间有逗号分隔。如果该值需要优先级,那么在值的后方跟上优先级q=0.8(q的值由0~1,优先级从低到高)。值与优先级中间由分号相隔。
头部字段名:值1,值2;q=0.8
下方就是截取的网络请求中Request Headers的部分内容,红框中的Accept-Language就是头部字段名,冒号后边就是该字段相应的值了。如图所示:
HTTP头部字段可以分为通用头部字段,请求头部字段,响应头部字段以及实体头部字段,下面将详细的介绍。
一、通用头部字段(General Header Fields)
该字段在请求头和响应头都会使用到,下方是常用的通用头部字段:
1、Cache-Control
用来操作缓存的工作机制,下方截图响应头中的Cache-Control的参数为private和max-age=10。private缓存是私有的,仅向特定用户提供相应的缓存信息。如果是public,就意味着可向任意方提供相应的缓存信息。max-age=10表示缓存有效期为10秒。从下方的Expires(过期时间)和Last-Modified(最后修改时间)就可以看出,这两者之间的差值正好是10秒。
该字段还可以对应其他的参数:
- no-cache:如果是客户端的话,说明客户端不会接收缓存过的响应,要请求最新的内容。而服务器端则表示缓存服务器不能对相应的资源进行缓存
- no-store:表示缓存不能再本地存储
- max-age:该参数后方会被赋值上相应的秒数,在请求头中表示如果缓存时间没有超过这个值就返回给我。而在相应头中时,则表示资源在缓存服务器中缓存的最大时间
- only-if-cached:表示客户端仅仅请求缓存服务器上的内容,如果缓存服务器上没有请求的内容,那么返回504 Gateway Timeout
- must-revalidata:表示缓存服务器在返回资源时,必须向资源服务器确认其缓存的有效性
- no-transform:无论请求还是响应,都不能在传输的过程中改变报文体的媒体类型
2、Connection
该字段可以控制不转发给代理服务器的首部字段以及管理持久连接,下方这个响应报文头中的Connection就是用来管理持久连接的,其参数为keep-alive,就是保持持久连接的意思。可以使用close参数将其关闭。
3、Transfer-Encoding
该字段表示报文在传输过程中采用