图解HTTP:通用首部字段

通用首部字段是指请求报文和响应报文双方都会使用的首部。

  • Cache-Control

通过指定首部字段Cache-Control的指令能操作缓存的工作机制。

Client: 如果有新缓存请给我~ 
Server: 我希望你不要对此做缓存......

指令的参数是可选的,多个指令之间通过,分割。

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

缓存请求指令

指令 参数 说明
no-cache 强制向源服务器再次验证
no-store 不缓存请求或响应的任何内容
max-age 必需 响应的最大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值
s-maxage 必需 公告缓存服务器响应的最大Age值
cache-extension - 新指令标记(token)

当使用s-maxage指令后直接忽略对Expires首部字段及max-age指令的处理。

应用HTTP/1.1版本的缓存服务器遇到同时存在Expires首部字段的情况时,会优先处理max-age指令,而忽略掉Expires首部字段。

使用must-revalidate指令会忽略请求的max-stale指令。

  • Connection

Connection首部字段具备两个作用:控制不再转发给代理的首部字段、管理持久连接。

Connection: 不再转发的首部字段名/close

HTTP/1.1版本的默认连接都是持久连接。

  • Date

HTTP/1.1协议使用在RFC1123中规定的日期时间的格式:

Date: Tue, 11 Jun 2019 18:12:57 GMT
  • Pragma

Pragma是HTTP/1.1之前版本的历史遗留字段,仅作为与HTTP/1.0的向后兼容而定义。

规范定义的形式唯一: Pragma: no-cache

该首部字段属于通用首部字段,但只用于在客户端发送的请求中。客户端要求所有的中间服务器不返回缓存的资源。

Client: 我不接受缓存
  • Trailer
Client: 在报文的最后写了很重要的东西,记得要仔细阅读哦

该首部字段可应用在HTTP/1.1版本分块传输编码时。

  • Transfer-Encoding
Client: 用这种传输编码方式发送哦

HTTP/1.1的传输编码方式仅对分块传输编码有效。

  • Upgrade
Client: 能让我使用这个协议吗?

使用首部字段Upgrade时还需要额外指定Connection: Upgrade。Upgrade首部字段产生作用的Upgrade对象仅限于客户端和邻接服务器之间。

  • Via

使用首部字段Via是为了追踪客户端与服务器之间的请求和响应报文的传输路径。首部字段Via不仅用于追踪报文的转发,还可避免请求回环的发生。所以必须在经过代理时附加该首部字段内容。

Via首部是为了追踪传输路径,所以经常会和TRACE方法一起使用。

  • Warning

HTTP/1.1的Warning首部是从HTTP/1.0的响应首部(Retry-After)演变过来的。

Warning首部的格式如下: Warning: [警告码][警告的主机: 端口号]"[警告内容]"([日期时间])

HTTP/1.1中定义了7种警告。

警告码 警告内容 说明
110 Response is stale 代理返回已过期的资源
111 Revalidation failed 代理再验证资源有效性时失败(服务器无法到达等原因)
112 Disconnection operation 代理与互联网连接被故意切断
113 Heuristic expiration 响应的使用期超过24小时(有效缓存的设定时间大于24小时的情况下)
199 Miscellaneous warning 任意的警告内容
214 Transformation applied 代理对内容编码或媒体类型等执行了某些处理时
299 Miscellaneous persistent warning 任意的警告内容

(最近更新:2019年09月18日)

你可能感兴趣的:(#,Internet)