1. 程式人生 > >淺析HTTP首部欄位

淺析HTTP首部欄位

    HTTP首部欄位是構成HTTP報文的重要組成部分,在客戶端和伺服器之間以HTTP協議進行通訊的過程中,無論是請求還是響應,它都能夠起到傳遞額外關鍵資訊的作用。

    使用首部欄位是為了給瀏覽器和伺服器提供諸如報文大小、使用的語言、接收的字符集、認證資訊等內容。

    HTTP首部欄位的結構

    HTTP的首部欄位是由首部欄位名和欄位值組成的,中間以“:”進行分隔。

首部欄位名: 欄位值

    例如在首部欄位中使用 Content-Type 這個欄位來表示報文主體物件型別:

Content-Type: text/html

    另外,欄位值對應單個HTTP首部欄位可以有多個值:

Keep-Alive: timeout=15, max=100

    4種HTTP首部欄位型別

    HTTP首部欄位根據實際用途被分為以下四種類型:

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

    HTTP/1.1 首部欄位一覽

        1>通用首部欄位

通用首部欄位

        2>請求首部欄位

請求首部欄位

        3>響應首部欄位

響應首部欄位

        4>實體首部欄位

實體首部欄位

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

     HTTP首部欄位可以定義快取代理和非快取代理的行為,分為兩種型別:

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

        此類首部會轉發給請求/響應對應的最終接收物件,且必須儲存在由快取生成的響應中,並規定它必須被轉發。

     2>逐跳首部(Hop-by-hop)

        此類首部只對單次轉發有效,會因為通過快取或代理而不再轉發。HTTP/1.1和之後的版本中,如果需要使用此類首部,必須提供Connection首部欄位。

     下面列舉了逐跳首部欄位:

  • Connection
  • Keep-Alive
  • Proxy-Authenticate
  • Proxy-Authorization
  • Trailer
  • TE
  • Transfer-Encoding
  • Upgrade