图解HTTP解析6(通用首部)

一、通用首部字段

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

1. Cache-Control(★)

指定该字段可以控制缓存的行为。
该指令参数是可选的,多个之间用,隔开,如:
Cache-Control: private, max-age=0, no-cache

1.1 缓存请求指令

  • no-cache : Cache-Control: no-cache,在请求中带上该首部字段,则表示客户端将不会接收缓存过的响应。将该请求转发给源服务器(要求中间服务器强制向源服务器发起验证),注意:该指令是指不缓存过期资源

  • no-store :Cache-Control: no-store,暗示请求(和对应的响应) 或响应中包含机密信息,no-store 才是真正地不进行缓存,该指令规定缓存不能在本地存储请求或响应的任一部分。

  • max-age:Cache-Control: max-age=604800(单位 : 秒),服务器中会对缓存的资源记录它的缓存时间,当请求含有该字段指令时,代表当资源缓存时间小于指令指定时间,则接收缓存资源,否则,向源服务器发起验证请求。当把max-age=0时,则表示直接发送给源服务器。

  • s-maxage:Cache-Control: s-maxage=604800(单位 : 秒),该指令作用与max-age一样,但只用于共享缓存(比如 CDN 缓存)。

  • min-fresh:Cache-Control: min-fresh=60(单位: 秒),min-fresh 指令要求缓存服务器返回至少还未过指定时间的缓存资源

  • max-stale :Cache-Control: max-stale=3600(单位: 秒),即使过期,客户端也会接收该资源,若指定参数,如=3600,则表示在3600秒内,就算资源过期也可以接收资源。

  • only-if-cached:Cache-Control: only-if-cached,仅当资源在缓存服务器上缓存才要求返回。

  • must-revalidate :Cache-Control: must-revalidate,代理会向源服务器再次验证即将返回的响应缓存目前是否仍然有效。若代理无法获得资源,则会返回504(Gateway Timeout)状态码。使用 must-revalidate 指令会忽略请求的max-stale 指令

  • proxy-revalidate:Cache-Control: proxy-revalidate,要求所有的缓存服务器在接收到客户端带有该指
    令的请求返回响应之前, 必须再次验证缓存的有效性。

  • no-transform :规定无论是在请求还是响应中, 缓存都不能改变实体主体的媒体类型。这样做可防止缓存或代理压缩图片等类似操作

1.2 缓存响应指令

  • no-cache : Cache-Control: no-cache,如果响应首部带上该字段,则表示禁止中间服务器对资源进行缓存,也不会对中间服务器提出的资源有效性进行验证。Cache-Control: no-cache=Location,使用该指令并带上Location这一参数值,则表示禁止用户本地对该响应报文进行缓存。

  • no-store :同请求的no-store一样

  • max-age:Cache-Control: max-age=604800(单位 : 秒)当服务器返回该指令时,代表缓存服务器将不对资源的有效性再作确认,而是把该指令的指定数值当作资源的缓存的最长时间。对浏览器而言,则是将该资源缓存在本地,在max-age指定时间中都不会向服务器发起请求。

  • s-maxage:当 s-maxage=60时,在这 60 秒中,即使更新了 CDN 的内容,浏览器也不会进行请求。也就是说 max-age 用于普通缓存,而 s-maxage 用于代理缓存。如果存在 s-maxage,则会覆盖掉 max-age 和 Expires header。

  • no-transform :规定无论是在请求还是响应中, 缓存都不能改变实体主体的媒体类型。这样做可防止缓存或代理压缩图片等类似操作

2. Connection(★)

2.1 请求

  • 不再转发的首部字段名 Connection: 不再转发的首部字段名,在请求转发过程中,删除不想给代理看到得首部字段(Hop-by-hop首部)

2.2 响应

  • 不再转发的首部字段名 Connection: 不再转发的首部字段名,在响应转发过程中,删除不想给代理看到得首部字段(Hop-by-hop首部)
  • close
    HTTP/1.1 版本的默认连接都是持久连接。 为此, 客户端会在持久连接上连续发送请求。当服务器端想明确断开连接时, 则指定Connection 首部字段的值为 Close。

3. Date

首部字段 Date 表明创建 HTTP 报文的日期和时间。HTTP/1.1 协议使用在 RFC1123中规定的日期时间的格式, Date: Tue, 03 Jul 2012 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

允许发送方在分块发送的消息后面添加额外的元信息。 该首部字段可应用在 HTTP/1.1 版本分块传输编码时。

6. Transfer-Encoding

首部字段 Transfer-Encoding 规定了传输报文主体时采用的编码方式。HTTP/1.1 的传输编码方式仅对分块传输编码有效。Transfer-Encoding: chunked

7.Upgrade(★)

首部字段 Upgrade 用于检测 HTTP 协议及其他协议是否可使用更高的版本进行通信, 其参数值可以用来指定一个完全不同的通信协议。使用首部字段 Upgrade 时, 还需要额外指定Connection:Upgrade
Upgrade: TLS/1.0。

8.Via

使用首部字段 Via 是为了追踪客户端与服务器之间的请求和响应报文的传输路径。

9. Warning

HTTP/1.1 的 Warning 首部是从 HTTP/1.0 的响应首部(Retry-After) 演变过来的。 该首部通常会告知用户一些与缓存相关的问题的警告。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,753评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,668评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,090评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,010评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,054评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,806评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,484评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,380评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,873评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,021评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,158评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,838评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,499评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,044评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,159评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,449评论 3 374
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,136评论 2 356

推荐阅读更多精彩内容

  • 本文是《图解HTTP》读书笔记的第二篇,主要包括此书的第六章内容,因为第六章的内容较多,而且比较重要,所以单独写为...
    lijiankun24阅读 1,366评论 0 6
  • HTTP 首部 HTTP 报文首部 HTTP 协议的请求和响应报文中必定包含 HTTP 首部。首部内容为客 户端和...
    Gu_Ran阅读 756评论 0 3
  • 作者:李成文;标签: http首部 HTTP报文首部 HTTP协议的请求和响应报文中必定包含HTTP首部。首部内容...
    广州芦苇科技web前端阅读 1,096评论 0 0
  • HTTP 首部 1. HTTP 报文首部 HTTP 协议的请求和响应报文中必定包含 HTTP 首部,首部内容为客户...
    13kmsteady阅读 382评论 0 2
  • HTTP报文首部   HTTP协议的请求和响应报文中必定包含HTTP首部。首部内容为客户端和服务器分别处理请求和响...
    JarvanZ阅读 787评论 0 0