1. 程式人生 > >圖解HTTP學習記錄(六)

圖解HTTP學習記錄(六)

HTTP 首部

HTTP報文首部

HTTP請求報文

在請求中,HTTP 報文由方法、URI、HTTP 版本、HTTP 首部欄位等部分構成

HTTP響應報文

在響應中,HTTP 報文由 HTTP 版本、狀態碼(數字和原因短語)、HTTP 首部欄位 3 部分構成。

HTTP首部欄位

HTTP首部欄位結構

HTTP 首部欄位是由首部欄位名和欄位值構成的,中間用冒號“:” 分隔。

首部欄位名: 欄位值

另外,欄位值對應單個HTTP首部欄位可以有多個值,如下所示

keep-Alive: timeout= 15, max = 100

若 HTTP 首部欄位重複了會如何
當 HTTP 報文首部中出現了兩個或兩個以上具有相同首部欄位名時會怎麼樣?這種情況在規範內尚未明
確,根據瀏覽器內部處理邏輯的不同,結果可能並不一致。有些瀏覽器會優先處理第一次出現的首部字
段,而有些則會優先處理最後出現的首部欄位。

HTTP首部欄位型別

  • 通用首部欄位
    請求報文和響應報文雙方都會使用的首部
  • 請求首部欄位
    從客戶端向伺服器端傳送請求報文時使用的首部。補充了請求的附加內容、客戶端資訊、響應內容相關優先
    級等資訊
  • 響應首部欄位
    從伺服器端向客戶端返回響應報文時使用的首部。補充了響應的附加內容,也會要求客戶端附加額外的內容
    資訊。
  • 實體首部欄位
    針對請求報文和響應報文的實體部分使用的首部。補充了資源內容更新時間等與實體有關的資訊

HTTP/1.1 首部欄位一覽

通用首部欄位 首部欄位名| 說明 | ————- | ——– | Cache-Control|控制快取的行為 Connection| 逐跳首部、連線的管理 Date|建立報文的日期和時間 Pragma|報文指令 Trailer |報文末端的首部一覽 Transfer-Encoding |指定報文主體的傳輸編碼方式 Upgrade |升級為其他協議 Via |代理伺服器的相關資訊 Warning| 錯誤通知 請求首部欄位
首部欄位名 說明
Accept 使用者代理可處理的媒體型別
Accept-Charset 優先的字符集
Accept-Encoding 優先的內容編碼
Accept-Language 優先的語言(自然語言)
Authorization Web認證資訊
Expect 期待伺服器的特定行為
From 使用者的電子郵箱地址
Host 請求資源所在伺服器
if-Match 比較實體標記(ETag)
if-Modifed-Since 比較資源的更新時間
If-None-Match 比較實體標記(與If-Match相反)
If-Range 資源未更新時傳送實體Byte的範圍請求
If-Unmodified-Since 比較資源的更新時間(與If-Modified-Since相反)
Max-Forwards 最大傳輸逐跳數
Proxy-Authorization 代理伺服器要求客戶端的認證資訊
Range 實體的位元組範圍請求
Referer 對請求中URI的原始獲取方
TE 傳輸編碼的優先順序
User-Agent HTTP 客戶端程式的資訊
響應首部欄位 首部欄位名| 說明 | ——— | ——- | Accept-Ranges| 是否接受位元組範圍請求 Age|推算資源建立經過時間 ETag|資源的匹配資訊 Location| 令客戶端重定向至指定URI Proxy-Authenticate|代理伺服器對客戶端的認證資訊 Retry-After|對再次發起請求的時機要求 Server|HTTP伺服器的安裝資訊 Vary|代理伺服器快取的管理資訊 WWWW-Authenticate|伺服器對客戶端的認證資訊 實體首部欄位 首部欄位名|說明 |——–|————————-| Allow|資源可支援的HTTP方法 Content-Encoding|實體主體適用的編碼方式 Content-Language|實體主體的自然語言 Content-Length| 實體主體的大小(單位:位元組) Content-Location|替代對應資源的URI Content-MD5|實體主體的報文摘要 Content-Range|實體主體的位置範圍 Content-Type|實體主體的媒體型別 Expires|實體主體過期的日期時間 Last-Modified|資源的最後修改日期時間

End-to-end首部和 Hop-by-Hop首部

HTTP首部欄位將定義成快取代理和非快取代理

端到端首部(End-to-end)

分在此類別中的首部會轉發給請求 / 響應對應的最終接收目標,且必須儲存在由快取生成的響應中,另外規 定它必須被轉發

逐跳首部(Hop-by-Hop)

分在此類別中的首部只對單次轉發有效,會因通過快取或代理而不再轉發。HTTP/1.1 和之後版本中,如果要 使用 hop-by-hop 首部,需提供 Connection 首部欄位。 下面列舉了 HTTP/1.1 中的逐跳首部欄位。除這 8 個首部欄位之外,其他所有欄位都屬於端到端首部。 * Connection * Keep-Alive * Proxy-Authenticate * Proxy-Authorization * Trailer * TE * Transfer-Encoding * Upgrade

為CooKie服務的首部欄位

![](https://user-gold-cdn.xitu.io/2018/9/13/165d2e5b4d07bfda?w=703&h=181&f=png&s=36418) ![](https://user-gold-cdn.xitu.io/2018/9/13/165d2e5e38b2f964?w=800&h=314&f=png&s=123841) ![](https://user-gold-cdn.xitu.io/2018/9/13/165d2e5ffcb43995?w=579&h=489&f=png&s=66013)

其他首部

  • X-Frame-Options
  • X-XSS-protection
  • DNT
  • P3P