通用首部是指请求报文和响应报文双方都会使用的首部
Cahche-Control
通过指定首部字段Cache-Control的指令,就能操作缓存的工作机制
Cache-Control:max-age=0, private, must-revalidate
缓存请求指令
指令 | 参数 | 说明 |
---|---|---|
no-cache | 无 | 强制向原服务器再次验证 |
no-store | 无 | 不缓存请求或响应的任何内容 |
max-age = [秒] | 必须 | 响应 的最大值 |
max-stale(=[秒]) | 可省略 | 接收已过期的响应 |
min-fresh = [秒] | 必需 | 期望在指定时间内的响应仍有效 |
no-transform | 无 | 代理不可更改媒体类型 |
only-if-cached | 无 | 从缓存获取资源 |
cache-extension | - | 新指令标记(token) |
缓存响应指令
指令 | 参数 | 说明 |
---|---|---|
public | 无 | 可向任意方提供响应的缓存 |
private | 可省略 | 仅向特定用户返回响应 |
no-cache | 可省略 | 缓存前必须先确认其有效性 |
no-store | 无 | 不缓存请求或响应的任何内容 |
no-transform | 无 | 代理不可更改媒体类型 |
must-revalidate | 无 | 可缓存但必须再向服务器进行确认 |
proxy-revalidate | 无 | 要求中间缓存服务器对缓存的响应有效性在进行确认 |
max-age = [秒] | 必须 | 响应 的最大Age值 |
cache-extension | - | 新指令标记(token) |
s-maxage = [秒] | 必需 | 公共缓存服务器响应的最大Age值 |
Connection
Connection首部字段具备如下两个作用:
- 控制不在转发给代理的首部字段
GET / HTTP/1.1
Upgrade: HTTP/1.1
Connection: Upgrade
经过代理服务器到达原服务器(首部字段Upgrade被删除在转发)
GET / HTTP/1.1
- 管理持久连接
HTTP/1.1 版本默认是持久连接的,为此客户端会在持久连接上连续发送请求,当服务器端想明确断开连接时,则指定Connection首部字段的值为Close.如果想在旧版本的HTTP协议上维持持续连接时,则需指定Connection首部字段的值为Keep-Alive
Date
表明创建HTTP报文的日期和时间
Pragma
Pragma 是HTTP/1.1 之前版本的历史遗留字段 仅作为与HTTP/1.0的向后兼容二定义
Trailer
首部字段Trailer会事先说明在报文主体后记录了哪些首部字段。该首部字段可应用在HTTP/1.1版本分块传输编码时
Transfer-Encoding
首部字段Transfer-Encoding规定了传输报文主体时采用的编码方式
HTTP/1.1的传输编码方式仅对分块传输编码有效
Transfer-Encoding 可选值有:chunked,identity ;
Upgrade
首部字段Upgrade用于检测HTTP协议及其他协议是否可以使用更高版本进行通信,其参数值可以用来指定一个完全不同的通信协议
对于附有首部字段Upgrade的请求,服务器可用101Switching Protocols 状态码作为响应返回
Via
使用首部字段Via 是为了追踪客户端与服务器之间的请求和响应报文的传输路径
报文经过代理和网关时,会先在首部字段Via中附加该服务器的信息,然后在进行转发
Warning
HTTP/1.1的Warning 首部字段是从HTTP/1.1 的响应首部(Retry-After)演变过来的。该首部通常会告知用户一些与缓存相关的问题警告