五. HTTP首部
HTTP协议的请求和响应报文必定包含首部,是报文中包含信息最丰富的:
注:如果首部中出现相同的字段,不同浏览器会有不同的处理方式,有的会优先处理第一个,而有的浏览器是优先处理第二个。
HTTP首部字段类型有四种:
- 通用首部:请求和响应都会用的;
- 请求首部:请求报文中使用,补充了附加内容、响应内容相关优先级等信息;
- 响应首部:响应报文中使用,补充响应的优先级内容;
- 实体首部:针对实体部分使用的首部,补充资源内容更新时间等与实体有关的内容。
当然也还包含Cookie、Set-Cookie等首部字段。
1. 通用首部字段
1)Cache-Control
该字段能控制缓存(缓存服务器)的行为,有如下指令:
- public
表示其他客户端也可以利用此缓存;private则相反,此缓存仅供特定的客户端使用。 - no-cache
如果是请求报文首部字段,表示客户端不接受缓存过的响应,需要缓存服务器将此请求转发给源服务器;如果是响应报文首部字段,表示此响应不允许缓存服务器缓存;
这有效避免了缓存服务器返回过期的响应。 - no-store
表示请求或响应报文中存在机密信息,所以缓存服务器不能再本地存储请求或响应的任何一部分。
当然指令还有很多,这里就不一一讨论了。
2)Connection
HTTP1.1默认为持久连接,客户端会连续发送请求,当服务端先断开时就指定Connection字段为close。
3)Date
表示创建报文的日期和时间。
4)Via
可以追踪客户端服务器之间报文传输的路径。
2. 请求首部字段
1)Accept
q是权重,表示优先级。
2)Accept-Charset
3)Accept-Encoding
指定内容编码及其优先级顺序,如gzip、identity(不压缩)等。
4)Authorization
如果请求的资源需要认证信息时,服务器会返回状态码401;这是客户端就会将此字段加入首部,用来告知服务器认证信息。
5)Host
这是一个在HTTP1.1中必须被包含的首部字段,若服务器未设置主机名直接发空值;
3. 响应首部字段
1)Accept-Ranges
表示是否可以处理范围请求,bytes表示可以处理,none反之。
2)Age
表示服务器创建此响应已经过去的秒数,如果是缓存服务器则表示缓存的响应发起认证到认证完成的时间值。
4. 实体首部字段
1)Allow
当服务器收到不支持的HTTP请求方法时,会返回响应:状态码405,并在首部字段Allow后添加所有支持的HTTP方法:
2)Last-Modified
指明资源最终修改的时间。
5. 为Cookie服务的首部字段
Cookie用来管理服务器和客户端之间的状态,Web服务器会经过浏览器将一些数据临时写入用户计算机内,当用户访问Web服务器时可以通过通信的方式再取回Cookie。下图为与Cookie有关的首部字段:
6. 说明
本文为《图解HTTP》读书笔记,如有错误,还请兄弟们指正,大家一起进步。