之前文章中簡介過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)演 變過來的。該首部通常會告知使用者一些與快取相關的問題的警告。