通用首部欄位詳解-四大首部欄位之一

zhangfaliang發表於2018-12-27

之前文章中簡介過http/1.1的通用首部欄位《常見通用首部欄位》,但是在那篇文章只是簡介一下,沒有具體解釋,不少小夥伴看完也是一知半解,接下來我們們就看一下通用首部欄位的詳解。

由於Cache-Control 比較特殊,會在《Cache-Control 用法》,今天就不在這講解了

1 Connection 

Connection 有兩個作用。

  • 控制不再轉發給代理的首部欄位
  • 管理持及連線

控制不在轉發給代理的首部字,看圖通用首部欄位詳解-四大首部欄位之一


控制持久連線,看圖

通用首部欄位詳解-四大首部欄位之一

http/1.1版本的預設連線都是持久連線。為此,客戶端會持久連線上持續傳送請求,當伺服器端想明確斷開時,則指定Connect 首部欄位值為Close

通用首部欄位詳解-四大首部欄位之一

2 date

首部通用欄位Date表明建立http報文的日期和時間。通用首部欄位詳解-四大首部欄位之一

3 Pragma報文指令

pragma是http/1.1 之前版本的歷史遺留欄位,僅作為與http/1.0的向後相容而定義。

規範定義的形式唯一

Pragma:no-cache

該首部欄位雖然屬於通用欄位,但只用於客戶端送請求中。客戶端可以要求所有的中間伺服器不返回快取的資源。

通用首部欄位詳解-四大首部欄位之一

所有的中間伺服器如果都是以http/1.1為基準,那麼直接採用Cache-Control:no-cache指定不走快取最為理想。但要整體掌控全部中間伺服器使用http協議版本是不現實的,因此,傳送請求時會同時包含下面兩個首部欄位

Cache-Control:no-cache

Pragma:no-cache

4 Trailer 報文末端一覽,看圖通用首部欄位詳解-四大首部欄位之一

首部欄位Trailer會事先說明在報文主體後記錄了那些首部欄位。該首部欄位可應用在HTTP/1.1版本分塊傳輸編碼時


通用首部欄位詳解-四大首部欄位之一

5 Transfer-Encoding 報文主體傳輸編碼,看圖


通用首部欄位詳解-四大首部欄位之一

Transfer-Encoding 規定了傳輸報文主體時採用的編碼方式。

http/1.1的傳輸隨編碼方式近對分塊傳輸編碼有效

通用首部欄位詳解-四大首部欄位之一

圖中的用例,首部欄位Transfer-Encoding中指定的那樣,有效使用分塊傳輸編碼,且分別被分成3312位元組和914位元組大小的分塊資料


6 Upgrade 協議升級

首部欄位 Upgrade用於檢測http協議及其他協議是否可使用更高的版本進行通訊,其引數值可以用來指定一個完全不同的通訊協議通用首部欄位詳解-四大首部欄位之一

上圖用例中,首部欄位 Upgrade 指定的值為 TLS/1.0。請注意此處兩 個欄位首部欄位的對應關係,Connection 的值被指定為 Upgrade。 Upgrade 首部欄位產生作用的 Upgrade 物件僅限於客戶端和鄰接服務 器之間。因此,使用首部欄位 Upgrade 時,還需要額外指定 Connection:Upgrade。

對於附有首部欄位 Upgrade 的請求,伺服器可用 101 Switching Protocols 狀態碼作為響應返回。

7 Via 代理伺服器資訊

via首部欄位主要是用於記錄客戶端和中轉伺服器之間路徑的記錄。首部欄位Via不僅用於記錄報文轉發路徑還可以避免請求迴環的發生,所以必須在經過的代理上附加首部欄位。通用首部欄位詳解-四大首部欄位之一

8 Wraning 警告信或者錯誤資訊

HTTP/1.1 的 Warning 首部是從 HTTP/1.0 的響應首部(Retry-After)演 變過來的。該首部通常會告知使用者一些與快取相關的問題的警告。


相關文章