您的位置:首页 > 理论基础 > 计算机网络

HTTP学习笔记6 首部字段类型 通用首部字段

2018-02-07 14:07 204 查看
HTTP首部字段:给浏览器和服务器提供报文主体大小、语言、认证内容等诸多额外的信息

首部字段格式
字段名:字段值1 [,字段值2] [,字段值3] [....]


首部字段类型

按实际用途划分:通用首部字段、请求首部字段、响应首部字段、实体首部字段

按是否缓存代理的行为划分:端到端首部(End to end Header)、逐跳首部(Hop by hop Header)

端到端首部:此类别的首部将转发给请求或响应的最终目标,经过代理时,也必须保存在由缓存生成的响应中,必须被转发。

逐跳首部:此类别的首部只对单次转发有效,经过缓存或代理时,将会失效。

在HTTP/1.1中的逐跳首部有8个,其余都为端到端首部,这8个为:Connection、Keep-Alive、Proxy-Authorization、Trailer、TE、Transfer-Encoding、Upgrade

(如果要使用逐跳首部,必须提供Connection字段,例如
Connection:Keep-Alive


通用首部字段:

① Cahe-Control:操作缓存

缓存请求指令:

no-cache:强制向服务器验证缓存有效期,无论缓存是否过期

no-store:不使用缓存

max-age=[秒]:接受缓存已保存的最大时间值,若缓存保存已超过该时间,则不会接受缓存(在Http/1.1中,同时存在max-age和Expires首部字段时,会忽略Expires,而在Http/1.0时,会忽略max-age)

max-stale(=[秒]):可接受缓存的最大保存时间,不管是否过期,时间可省略

min-fresh=[秒]:缓存的已保存时间加上该数值若未超过缓存的有效期,则可接受该缓存

no-transform:代理不可更改媒体类型

only-if-cached:只接受缓存资源,不会验证有效期,若无响应则返回504 网关超时状态码

缓存响应请求:

public:可向任意用户提供响应的缓存

private:只向特定用户提供缓存服务

no-cache:缓存前需确定有效性

no-store:不使用缓存

no-transform:代理不可更改媒体类型

must-revalidate:若缓存过期后,必须再向源服务器验证有效期,会忽略max-stale指令

proxy-revalidate:与must-revalidate类似,但只限定于代理服务器

max-age=[秒]:将资源作为缓存保存的最长时间,在此期间不再确认有效期

s-maxage=[秒]:与max-age类似,但只适用于公共的缓存服务器(会忽略max-age以及Expires)

示例:
Cache-Control:private,max-age=0,no-cache


② Connection:控制逐跳首部、管理持久连接

关闭持久连接:
Connection:close


在旧版本http协议上维持持久连接:

Connection:keep-alive
Keep-Alive:timeout=10,max=500


③ Date:创建Http报文的日期和时间

④ Pragma:为兼容低版本Http协议的缓存字段,常与Cache-Control一起使用

Pragma:no-cache
Cache-Control:no-cache


⑤ Trailer:应用于Http/1.1分块传输编码时,说明报文主体后记录了哪些首部字段

Transfer-Encoding:chunked
Trailer:Expires


⑥ Transfer-Encoding:传输时采用的编码方式,Http/1.1仅对分块编码有效

⑦ Upgrade:使客户端或邻接服务器升级协议版本

Upgrade:TLS/1.0
Connection:upgrade


⑧ Via:追踪客户端与服务器之间的请求和响应报文的传输路径,常与Trace方法连用,详见本博客代理那一节笔记

⑨ Warning:告知用户一些关于缓存的警告信息

格式
warning:[警告码] [警告主机:端口号] ["警告内容"] (日期)


例如:

110 response is stale 代理返回的资源已过期

111 revalidation failed 验证资源失败

113 heuristic expiration 响应有效期大于24小时,试探性过期

214 transformation applied 媒体类型被代理改变
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: