【计算机网络基础】HTTP响应首部都代表什么意思?
文章目录
首先说 通用首部字段是什么意思?
通用首部是指:请求报文和响应报文双方都会使用的首部.
废话不多说,直接上干货
1. Cache-control
通过指定首部字段Cache-control的指令,就能操作缓存
的工作机制。
指令的参数是可选的,多个指令之间通过“,”
分隔。首部字段 CacheControl 的指令可用于请求及响应时。
Cache-Control 指令一览:
缓存请求
指令:
指令 | 参数 | 说明 |
---|---|---|
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) |
//Cache-Control 指令分别是什么作用及其深层含义?后面会出一篇,本篇不做过多介绍
2.Connection
Connect首部字段具备如下两个作用。
- 控制不再转发给大力的首部字段
- 管理持久连接
控制不再转发给代理的首部字段
Connection: 不再转发的首部字段名
在客户端发送请求和服务器返回响应内,使用 Connection 首部字 段,可控制不再转发给代理的首部字段(即 Hop-by-hop 首 部)。
管理持久连接
Connection: close
HTTP/1.1 版本的默认连接都是持久连接
。为此,客户端会在持 久连接上连续发送请求。当服务器端想明确断开连接
时,则指定 Connection 首部字段的值为 Close。
Connection: Keep-Alive
HTTP/1.1 之前
的 HTTP 版本的默认连接都是非持久连接。为 此,如果想在旧版本的 HTTP 协议上维持持续连接
,则需要
指定 Connection 首部字段的值为 Keep-Alive。
3.Date
首部字段Date表明创建HTTP报文的日期和时间
HTTP/1.1
协议使用在 RFC1123 中规定的日期时间的格式,如下 示 例。
Date: Tue, 03 Jul 2012 04:40:59 GMT
之前
的 HTTP 协议版本中使用在 RFC850 中定义的格式,如下所示。
Date: Tue, 03-Jul-12 04:40:59 GMT
4.Pragma
Pragma 是 HTTP/1.1 之前版本的历史遗留字段
,仅作为与 HTTP/1.0 的向后兼容而定义。
唯一的规范定义格式:
Pragma: no-cache
该首部字段属于通用首部字段,但只用在客户端
发送的请求中,客户端会要求所有的中间服务器不返回缓存的资源。
所有的中间服务器如果都能以 HTTP/1.1 为基准,那直接采用 CacheControl: no-cache 指定缓存的处理方式是最为理想的。但要整体掌握 全部中间服务器使用的 HTTP 协议版本却是不现实的。因此,发送的 请求会同时含有下面两个首部字段。
Cache-Control: no-cache
Pragma: no-cache
5.Trailer
首部字段 Trailer 会事先说明在报文主体后
记录了哪些首部字段。该 首部字段可应用在 HTTP/1.1 版本分块传输编码时。
例子如下:
HTTP/1.1 200 OK
Date: Tue, 03 Jul 2012 04:40:56 GMT
Content-Type: text/html
... Transfer-Encoding: chunked
Trailer: Expires
...(报文主体)...
0
Expires: Tue, 28 Sep 2004 23:59:59 GMT
以上用例中,指定首部字段 Trailer 的值为 Expires,在报文主体之后 (分块长度 0 之后)出现了首部字段 Expires。
6. Transfer-Encoding
首部字段 Transfer-Encoding 规定了传输报文主体时采用的编码方式。
HTTP/1.1 的传输编码方式仅对分块传输编码有效。
7.Upgrade
首部字段 Upgrade 用于检测 HTTP 协议及其他协议是否可使用更高的 版本进行通信,其参数值可以用来指定一个完全不同的通信协议。
使用首部字段 Upgrade 时,还需要额外指定 Connection:Upgrade。
对于附有首部字段 Upgrade 的请求,服务器可用 101 Switching Protocols 状态码作为响应返回。
8.Via
使用首部字段 Via 是为了追踪客户端与服务器之间的请求和响应报文 的传输路径。
报文经过代理或网关时,会先在首部字段 Via 中附加该服务器的信 息,然后再进行转发。这个做法和 traceroute 及电子邮件的 Received 首部的工作机制很类似。
首部字段 Via 不仅用于追踪报文的转发,还可避免请求回环的发生。 所以必须在经过代理时附加该首部字段内容。
Via 首部是为了追踪传输路径,所以经常会和 TRACE 方法一起使 用。比如,代理服务器接收到由 TRACE 方法发送过来的请求(其中 Max-Forwards: 0)时,代理服务器就不能再转发该请求了。这种情况 下,代理服务器会将自身的信息附加到 Via 首部后,返回该请求的响 应。
9.Warning
HTTP/1.1 的 Warning 首部是从 HTTP/1.0 的响应首部(Retry-After)演 变过来的。该首部通常会告知用户一些与缓存相关的问题的警告。
Warning 首部的格式如下。最后的日期时间部分可省略。
Warning: [警告码][警告的主机:端口号]“[警告内容]”([日期时间])
HTTP/1.1 中定义了7
种警告。警告码对应的警告内容仅推荐参考。 另外,警告码具备扩展性,今后有可能追加新的警告码。
HTTP/1.1 警告码
警告码 | 警告内容 | 说明 |
---|---|---|
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(持久 杂项警告) | 任意的警告内容 |
//希望以上内容能够帮助到大家😄
往期计算机网络基础内容: