http協議(七)通用首部字段

2021-09-08 18:56:32 字數 4679 閱讀 4645

通用首部欄位的意思,就是:請求和響應報文雙方都會使用的首部

1、cache-control

通過指定它的指令,能操作快取的工作機制

指令引數是可選的,多個指令通過「,」分隔

cache-control: private, max-age=0, no-cache

cache-control指令一覽:

1.1  快取請求指令指令

引數 說明

no-cache 無

強制向源伺服器再次驗證

no-store 無

不快取請求或相應的任何內容

max-age[秒] 必須

相應的最大age值

max-stale(=[秒])

可省略接收已過期的響應

min-fresh=[秒] 必須

期望在指定時間內的響應仍有效

no-transform 無

**不可更改**型別

only-if-cached 無

從快取獲取資源

cache-extension

新標記指令(token)

1.2  快取響應指令指令

引數 說明

public 無

可向任意方提供響應的快取

private

可省略僅向特定使用者返回響應

no-cache

可省略快取前必須先確認其有效性

no-store 無

不快取請求或響應的任何內容

no-transform 無

**不可更改**型別

must-revalidate 無

可快取但必須再向源伺服器進行確認

proxy-revalidate 無

要求中間快取伺服器對換快取的響應有效性再次確認

max-age=[秒] 必需

響應的最大age值

s-maxage=[秒] 必需

公共快取伺服器響應的最大age值

cache-extension

新指令標記(token)

1.3  public

共享、公開的快取狀態,與private相反

cache-control: public

1.4  private

指定快取物件,需要驗證

cache-control: private

1.5  no-cache

防止從快取中返回過去的資源,請求中如包含該命令,表示客戶端不會接收快取過的響應,必須向源放****請求

如果響應中包含該命令,那麼快取伺服器不能對其資源進行快取,且源伺服器也將不在對快取伺服器請求中提出的資源有效性進行確認,且禁止其對相應資源進行快取操作

cache-control: no-cache=location

由伺服器返回的響應報文首部欄位中,若cache-control中對no-cache欄位名具體制定引數值,那麼客戶端在收到這個被指定引數值的首部字段對應的報文後,就不能快取

換言之,無引數值的首部字段可以使用快取,只能在響應中制定該引數

1.6  no-store

請求中包含機密資訊,快取不能在本地儲存請求或響應的任一部分k

cache-control: no-store

1.7  s-maxage

一般指**伺服器

與max-age指令相同,不同點在於s-maxage只適用於供多位使用者使用的公共快取伺服器

當使用該指令時,直接忽略對expires首部欄位及max-age指令的處理

cache-control: s-maxage=604800(單位:秒)

1.8  max-age

快取資源快取時間數值低於指定數值,就接受快取的資源,如max-age為0,則需要請求源伺服器

http1.1中,如遇到存在expires首部欄位的情況,會忽略expires欄位,優先處理max-age指令

cache-control: max-age=604800(單位:秒)

1.9  min-fresh

要求快取伺服器返回未過指定時間的資源

cache-control: min-fresh=60(單位:秒)

1.10  max-stale

規定快取的有效期,如指令中沒有引數,則無論多久,客戶端都可以接受響應,如指定了引數,即使過了有效期,只要在指令的範圍內,客戶端都可以接受響應

cache-control: max-stale

1.11  only-if-cached

表示客戶端只在快取伺服器有對應資源的情況下才接受響應,若無,則返回504

cache-control: only-if-cached

1.12  must-revalidate

**向客戶端返回響應前再次向源伺服器確認資源的有效性,若無,則返回504,且該指令會忽略請求中的max-stale指令

cache-control: must-revalidate

1.13  proxy-revalidate

要求所有的快取伺服器在向客戶端返回響應之前再次向源伺服器確認資源的有效性

cache-control: proxy-revalidate

1.14  no-transform

要求無論請求還是響應,都不能改變實體主體的**型別,防止快取或者**壓縮等操作

cache-control: no-transform

2、connection

該首部字段具備下面2個作用

1)控制不再**給**的首部字段

connection:不再**的欄位名(即刪除後再**)

2)管理持久連線

http1.1預設都是持久連線,客戶端會在持久連線上持續傳送請求,當伺服器明確表示需要斷開連線時,則指明首部字段值為close

connection: close

http1.1之前的版本預設都是非持久連線,需要在舊版本上保持持久連線,需要加入keep-alive指令

connection-keep-alive

3、date

表明建立http報文的日期和時間

date: sun, 31 jul 2016 01:28:48 gmt

4、pragma

是http1.1之前的版本歷史遺留字段,僅作為與http1.0的向後相容而定義,規範定義的形式唯一,如下所示

pragma: no-cache

只用於客戶端傳送的請求中,客戶端要求所有的中間伺服器不返回快取的內容

5、trailer

事先說明在報文主體後記錄了哪些首部字段,可應用於http1.1版本分塊傳輸編碼時

6、transfer-encoding

規定報文主體的編碼方式

http1.1的傳輸編碼方式僅對分塊傳輸編碼有效

transfer-encoding: chunked

7、upgrade

檢測http協議及其他協議是否可使用更高的版本進行通訊,其引數值可用來指定乙個完全不同的通訊協議

客戶端請求:

伺服器響應:

上面的例子中,首部欄位upgrade指定的值為tls/1.0,這裡的兩個首部欄位的對應關係,connection的值被指定為upgrade。

upgrade物件僅限於客戶端和鄰近伺服器之間,因此,使用首部欄位upgrade時,還需要額外指定connection upgrade

對於附有首部欄位upgrade的請求,伺服器可以用101switch protocols狀態碼作為響應返回

8、via

使用首部欄位via是為了追蹤客戶端與伺服器間的請求和響應報文的傳輸路徑

via不僅用於追蹤報文的**,還可避免請求回環的發生,因此,必須在經過**時附加該首部字段內容

9、warning

告知使用者與一些與快取相關的問題的警告

warning的首部格式如下,日期部分可省略

warning:[警告碼] [警告的主機:埠號] "[警告內容]" ([日期時間])

http1.1中定義了7中警告,警告碼對應的警告內容僅供參考

另外,警告碼具備擴充套件性,今後有可能追加新的警告

http協議(七)通用首部字段

通用首部欄位的意思,就是 請求和響應報文雙方都會使用的首部 1 cache control 通過指定它的指令,能操作快取的工作機制 指令引數是可選的,多個指令通過 分隔 cache control private,max age 0,no cache cache control指令一覽 1.1 快取...

http協議基礎(七)通用首部字段

通用首部欄位的意思,就是 請求和響應報文雙方都會使用的首部 1 cache control 通過指定它的指令,能操作快取的工作機制 指令引數是可選的,多個指令通過 分隔 cache control private,max age 0,no cache cache control指令一覽 1.1 快取...

HTTP 通用首部字段

cache control 能操作快取的工作機制 指令的引數是可選的,多個指令之間通過 分隔。首部字段 cache control的指令可用於請求及響應時。cache control private,max age 0,no cache快取請求指令 指令引數 說明no cache 無強制向源伺服器再...