HTTP 請求首部字段(四)

請求首部字段

請求首部字段是從客戶端往服務器端發送請求報文中所使用的字段,用于補充請求的附加信息、客戶端信息、對響應內容相關的優先級等內容。

1. Accept

通知服務器,用戶代理能夠處理的媒體類型及媒體類型的相對優先級。可使用 type/subtype 這種形式,一次指定多種媒體類型。

  • 文本文件:text/htmltext/plaintext/cssapplication/xml...
  • 圖片文件:image/jpegimage/gifimage/png...
  • 視頻文件:video/mpegvideo/quicktime...
  • 應用程序使用的二進制文件:application/octet-stream,application/zip...

若想要給顯示的媒體類型增加優先級,則使用 q= 來額外表示權重值,用 ; 進行分隔。權重值范圍是0~1,默認為1。

2. Accept-Charset

告知服務器用戶代理支持的字符集及字符集的相對優先順序。可一次性指定多種字符集。與首部字段 Accept 相同的是可用權重 q 值來表示相對優先級。

Accept-Charset

3. Accept-Encoding

該字段用來告知服務器用戶代理支持的內容編碼及內容編碼的優先級順序。可一次性指定多種內容編碼。

  • gzip

  • compress

  • deflate

  • identity

    Accept-Encoding:gzip,deflate
    

4. Accept-Language

該字段用來告知服務器用戶代理能夠處理的自然語言集

5. Authorization

告知服務器,用戶代理的認證信息。通常,想要通過服務器認證的用戶代理會在接收到返回的401狀態碼響應后,把首部字段 Authorization 加入請求中。共用緩存在接收到含有 Authorization 首部字段的請求時操作處理會略有差異。

6.Expect

告知服務器,期望出現的某種特定行為。因服務器無法理解客戶端的期望做出回應而發生錯誤時,會返回狀態碼417 Expectation Failed。

7. From

告知服務器使用用戶代理的用戶的電子郵件地址。

8. Host

告知服務器,請求的資源所處的互聯網主機名和端口號。Host 首部字段在 HTTP/1.1 規范內是唯一一個必須被包含在請求內的首部字段。
請求被發送至服務器時,請求中的主機名會用 IP 地址直接替換解決。如果這時,相同的 IP 地址下部署運行著多個域名,那么服務器就會無法理解究竟是哪個域名對應的請求。因此,就需要使用首部字段 Host 來明確指出請求的主機名。 若服務器未設定主機名,那直接發送一個空值即可。如下所示

Host:

9. If-Match

告知服務器匹配資源所用的實體標記(ETag)值。這時的服務器無法使用弱 ETag 值。
服務器會比對 If-Match 的字段值和資源的 ETag 值,僅當兩者一致時,才會執行請求。反之,則返回狀態碼 412 Precondition Failed 的響應。

If-Match

10. If-Modified-Since

告知服務器若 If-Modified-Since 字段值早于資源的更新時間,則希望能處理該請求。而在指定 If-Modified-Since 字段值之后,如果請求的資源都沒有更新過,則返回狀態碼 304 Not Modified 的響應。

If-Modified-Since

11. If-None-Match

當請求資源的 ETag 值與服務器不一致的時候,告知服務器處理該請求

If-None-Match

12. If-Range

告知服務器若指定的 If-Range 值和請求資源的 ETag 值或時間相一致時,則作為范圍請求處理。反之,則返回全體資源。

If-Range

如果不使用 If-Range。那么當服務端的資源更新,客戶端持有的資源中一部分也會隨之無效,這是服務器會暫且以狀態碼 412 Precondition Failed 作為響應返回,其目的是催促客戶端再次發送請求。這樣一來就需要多花費兩倍的時間。

沒有 If-Range

13. If-Unmodified-Since

告知服務器,指定請求資源只有在字段值內指定的日期時間之后,未發生更新的情況下,才能處理請求。如果在指定時間后發生了更新,則以狀態碼 412 Precondition Failed 作為響應返回。

14. Max-Forwards

該字段以十進制整數形式指定可經過的服務器最大數目。服務器在往下一個服務器轉發請求之前,Max-Forwards 的值減 1 后重新賦值。當服務器接收到 Max-Forwards值為 0 的請求時,則不再進行轉發,而是直接返回響應。

Max-Forwards

15. Proxy-Authorization

接收到從代理服務器發來的認證質詢時,客戶端會發送包含首部字段 Proxy-Authorization 的請求,以告知服務器認證所需要的信息。

16. Range

對于只需獲取部分資源的范圍請求,包含首部字段 Range 即可告知服務器資源的指定范圍。接收到附帶 Range 首部字段請求的服務器,會在處理請求之后返回狀態碼為 206 Partial Content 的響應。無法處理該范圍請求時,則會返回狀態碼 200 OK 的響應及全部資源。

17. Referer

告知服務器請求的原始資源的 URI。
客戶端一般都會發送 Referer 首部字段給服務器。但當直接在瀏覽器的地址欄輸入 URI,或處于安全性的考慮是,也可以不發送該首部字段。
因為原始資源的 URI 中的查詢字符串可能含有 ID 和密碼等保密信息,要是寫進 Referer 轉發給其他服務器,則有可能導致保密信息的泄露。

18. TE

TE:gzip,deflate;q=0.5

告知服務器,客戶端能夠處理響應的傳輸編碼方式及相對優先級。它和 Accept-Encoding 的功能很像,但是用于傳輸編碼。
它除了指定傳輸編碼之外,還可以指定伴隨 trailer 字段的分塊傳輸編碼的方式。應用后者時,只需要把 trailers 賦值給該字段值

TE: trailers

19. User-Agent

該字段會將創建請求的瀏覽器和用戶代理名稱等信息傳達給服務器。
如果請求經過代理,那么中間也很可能會被添加上代理服務器的名稱。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 本文是《圖解HTTP》讀書筆記的第二篇,主要包括此書的第六章內容,因為第六章的內容較多,而且比較重要,所以單獨寫為...
    lijiankun24閱讀 1,399評論 0 6
  • 本篇文章篇幅比較長,先來個思維導圖預覽一下。 一、概述 1.計算機網絡體系結構分層 2.TCP/IP 通信傳輸流 ...
    滌生_Woo閱讀 55,248評論 24 557
  • 1. 網絡基礎TCP/IP HTTP基于TCP/IP協議族,HTTP屬于它內部的一個子集。 把互聯網相關聯的協議集...
    yozosann閱讀 3,470評論 0 20
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,973評論 19 139
  • 今夜你的黑頭發 是巖石上寂寞的黑夜 牧羊人用雪白的羊群 填滿了飛機場周圍的黑暗 黑夜比我更早睡去 黑夜是神的傷口 ...
    15周典閱讀 344評論 0 0