HTTP報文首部
HTTP協議的請求和響應報文中必定包含HTTP報文首部。首部內容分別為客戶端和伺服器處理請求和響應提供所需要的資訊。
HTTP請求報文
在請求中,HTTP報文由方法、URI、HTTP版本、HTTP首部欄位等部分構成
HTTP響應報文
在響應中,HTTP報文由HTTP版本、狀態碼(數字和原因短語)、HTTP首部欄位3部分構成
HTTP首部欄位
request headers
- 請求首部欄位
- 通用首部欄位
- 實體首部欄位
response headers
- 響應首部欄位
- 通用首部欄位
- 實體首部欄位
一共有4種首部欄位,下面會一一介紹
通用首部欄位
請求報文和響應報文都會使用的首部
Cache-Control指令一覽
快取請求指令:
快取響應指令:
Cache-Control:public :表明其他使用者也可以利用快取
Cache-Control:private:與public行為相反
Cache-Control:no-cache:目的是防止從快取中返回過期的資源。客戶端傳送的請求如果包含no-cache,表示客戶端不會接收快取過的響應,於是中間的快取伺服器必須把客戶端請求轉發給源伺服器,如果伺服器返回的響應包含該欄位,表示快取伺服器不能對資源進行快取。若對no-cache欄位名具體指定引數值,那麼客戶端在接收到這個被指定引數值的首部欄位對應的響應報文後,就不能使用快取。換言之,無引數值的首部欄位可以使用快取。只能在響應指令中指定該引數。
Cache-Control:no-store:暗示請求或響應包含機密資訊,不能再本地儲存請求或響應的任一部分。
注:事實上no-cache代表不快取過期的資源,快取會向源伺服器進行有效期確認後處理資源,no-store才是真正地不進行快取。
Cache-Control:s-maxage/max-age:指定快取期限和認證的指令。s-maxage和max-age功能相同,只是s-maxage指令只適用於供多位使用者使用的公共快取伺服器。當客戶端請求中包含max-age指令時,如果判定快取資源的快取時間數值比指定時間的數值更小,那麼客戶端就接收快取的資源。伺服器響應中包含max-age指令時,快取伺服器將不對資源的有效性再做確認,max-age數值代表資源儲存為快取的最長時間。
Cache-Control:min-fresh:要求快取伺服器返回至少還未過指定時間的快取資源。
Cache-Control:max-stale:指示快取資源即使過期也照常接收。如果指令為指定引數值,則快取始終可以被接收,如果指定了具體數值,即使過期,只要在max-stale指定的時間內,快取仍舊會被客戶端接收。
請求首部欄位
請求報文使用的首部
響應首部欄位
響應報文使用的首部
實體首部欄位
請求報文和響應報文的實體部分使用的首部
逐跳首部
逐跳首部(Hop-by-hop Header):分在此類別中的首部只對單次轉發有效,會因通過快取或代理而不再轉發。HTTP/1.1和之後版本中,如果要使用hop-by-hop首部,需提供Connection首部欄位。逐跳首部欄位包括如下欄位:
端到端首部
端到端首部(End-to-end Header):此類別中的首部會轉發給請求/響應對應的最終接收目標,且必須儲存在由快取生成的響應中,另外規定它必須被轉發,除了逐跳首部欄位,其他都是端到端首部欄位