請求首部字段
請求首部字段是從客戶端往服務器端發送請求報文中所使用的字段,用于補充請求的附加信息、客戶端信息、對響應內容相關的優先級等內容。
1. Accept
通知服務器,用戶代理能夠處理的媒體類型及媒體類型的相對優先級。可使用 type/subtype 這種形式,一次指定多種媒體類型。
- 文本文件:
text/html
,text/plain
,text/css
,application/xml
... - 圖片文件:
image/jpeg
,image/gif
,image/png
... - 視頻文件:
video/mpeg
,video/quicktime
... - 應用程序使用的二進制文件:
application/octet-stream
,application/zip
...
若想要給顯示的媒體類型增加優先級,則使用 q= 來額外表示權重值,用 ;
進行分隔。權重值范圍是0~1,默認為1。
2. Accept-Charset
告知服務器用戶代理支持的字符集及字符集的相對優先順序。可一次性指定多種字符集。與首部字段 Accept 相同的是可用權重 q 值來表示相對優先級。
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 的響應。
10. If-Modified-Since
告知服務器若 If-Modified-Since 字段值早于資源的更新時間,則希望能處理該請求。而在指定 If-Modified-Since 字段值之后,如果請求的資源都沒有更新過,則返回狀態碼 304 Not Modified 的響應。
11. If-None-Match
當請求資源的 ETag 值與服務器不一致的時候,告知服務器處理該請求
12. If-Range
告知服務器若指定的 If-Range 值和請求資源的 ETag 值或時間相一致時,則作為范圍請求處理。反之,則返回全體資源。
如果不使用 If-Range。那么當服務端的資源更新,客戶端持有的資源中一部分也會隨之無效,這是服務器會暫且以狀態碼 412 Precondition Failed 作為響應返回,其目的是催促客戶端再次發送請求。這樣一來就需要多花費兩倍的時間。
13. If-Unmodified-Since
告知服務器,指定請求資源只有在字段值內指定的日期時間之后,未發生更新的情況下,才能處理請求。如果在指定時間后發生了更新,則以狀態碼 412 Precondition Failed 作為響應返回。
14. Max-Forwards
該字段以十進制整數形式指定可經過的服務器最大數目。服務器在往下一個服務器轉發請求之前,Max-Forwards 的值減 1 后重新賦值。當服務器接收到 Max-Forwards值為 0 的請求時,則不再進行轉發,而是直接返回響應。
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
該字段會將創建請求的瀏覽器和用戶代理名稱等信息傳達給服務器。
如果請求經過代理,那么中間也很可能會被添加上代理服務器的名稱。