1. 程式人生 > >HTTP請求首部欄位詳解(二)

HTTP請求首部欄位詳解(二)

請求首部欄位是從客戶端向伺服器端傳送請求報文中所需要使用的欄位。它用來補充請求的附加資訊、客戶端資訊、對相應內容相關的優先順序等。

    本文詳細講解以下請求首部欄位:Except、From、Host、If-Match、If-Modified-Since、If-None-Match、If-Range和 If-Unmodified-Since 。

  1. Except

        客戶端首先使用Except欄位來告知伺服器,期望出現某種特殊行為,因伺服器無法理解客戶端的期望作出迴應而發生錯誤時,會返回狀態碼 417 Expectation Failed。 

    客戶端可以使用該欄位來寫明所期望的拓展,雖然HTTP/1.1規定只定義了100-continue(狀態碼100 Continue)之意。等待狀態碼 100 響應的客戶端在發生請求時,需要指定 Expect:100continue。

Except
  1. From

        該首部欄位用以告知伺服器使用代理的使用者的電子郵箱地址。通常情況下是為了顯示搜尋引擎等使用者代理的負責人的聯絡方式。

        使用代理時應該儘可能標明該欄位,但是有些代理不同,可能會在User-Agent欄位標明負責人的聯絡方式。

  1. Host

        該首部欄位會告知伺服器所請求的資源所處網際網路主機名和埠號。該欄位是HTTP/1.1明確規定必須包含在請求內的首部欄位。

        當多臺虛擬主機共享一個IP地址時,使用該欄位就可以加以區分,這就是Host欄位的存在的意義。

        若伺服器未設定主機名,那直 接傳送一個空值即可。如下所示:

Host
  1. If-Match

        形如 If-xxx 這種樣式的請求首部欄位,都可稱為條件請求。伺服器接收到附帶條件的請求後,只有判斷指定條件為真時,才會執行請求。

If-Match

    首部欄位 If-Match,屬附帶條件之一,它會告知伺服器匹配資源所用的實體標記(ETag)值。伺服器會比對 If-Match 的欄位值和資源的 ETag 值僅當兩者一致時,才會執行請求。反之,則返回狀態碼 412 Precondition Failed 的響應。

    還可以使用星號(*)指定 If-Match 的欄位值。針對這種情況,伺服器將會忽略 ETag 的值,只要資源存在就處理請求。

  1. If-Modified-Since

         如果在 If-Modified-Since 欄位指定的日期時間後,資源發生了 更新,伺服器會接受請求。

If-Modified-Since

        該欄位用於確認代理或者客戶擁有的本地資源的有效性。獲取資源的更新日期時間,可通過確認首部欄位 Last-Modified 來確定。

  1. If-Not-Match

        和If-Match不同,該欄位的作用是當請求資源的ETag和本欄位指定的值不同時,才返回請求的資源。

        在GET方法或者HEAD方法中,使用本欄位可以幫助獲取最新資源。這和If-Modified-Since的作用相似 。

  1. If-Range

        該首部欄位屬於附帶條件之一。它可以告知伺服器如果 If-Range 欄位值(ETag 值或者時間)和請求資源的 ETag 值或時間相一 致時,則作為範圍請求處理。反之,則返回全體資源。

If-Range
  1. If-Unmodified-Since

        該首部欄位用於告知伺服器,若指定的資源在該欄位指定的日期之後沒有更新,則伺服器處理請求,否則伺服器返回412Precondition Failed 作為響應返回。

If-Unmodified-Since