HTTP Headers的Request Headers

qq_41411324發表於2020-12-16

Accept
HTTP Header中Accept-Encoding 是瀏覽器發給伺服器,宣告瀏覽器支援的 MIME 型別

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8。意思是:瀏覽器支援的MIME型別分別是text/html、application/xhtml+xml、application/xml和*/*,優先順序是它們從左到右的排列順序。

MIME的英文全稱是 Multipurpose Internet Mail Extensions(多功能 Internet 郵件擴充服務),它是一種多用途網際郵件擴充協議,在1992年最早應用於電子郵件系統,但後來也應用到瀏覽器。

text/html,application/xhtml+xml,application/xml 都是 MIME 型別,也可以稱為媒體型別和內容型別,斜槓前面的是 type(型別),斜槓後面的是 subtype(子型別);type 指定大的範圍,subtype 是 type 中範圍更明確的型別,即大類中的小類。

Text:用於標準化地表示的文字資訊,文字訊息可以是多種字符集和或者多種格式的;

text/html表示 html 文件;

Application:用於傳輸應用程式資料或者二進位制資料;

application/xhtml+xml表示 xhtml 文件;

application/xml表示 xml 文件;

*/*表示任意型別。

Accept-Encoding
HTTP Header中Accept-Encoding 是瀏覽器發給伺服器,宣告瀏覽器支援的編碼型別
常見的有

Accept-Encoding: compress, gzip //支援compress 和gzip型別
Accept-Encoding: //預設是identity
Accept-Encoding: * //支援所有型別 Accept-Encoding: compress;q=0.5, gzip;q=1.0//按順序支援 gzip , compress
Accept-Encoding: gzip;q=1.0, identity; q=0.5, *;q=0 // 按順序支援 gzip , identity

伺服器返回的對應的型別編碼header是 content-encoding.伺服器處理accept-encoding的規則如下所示

  1. 如果伺服器可以返回定義在Accept-Encoding 中的任何一種Encoding型別, 那麼處理成功(除非q的值等於0, 等於0代表不可接受)
  2. “*” 代表任意一種Encoding型別 (除了在Accept-Encoding中顯示定義的型別)
  3. 如果有多個Encoding同時匹配, 按照q值順序排列
  4. identity總是可被接受的encoding型別(除非顯示的標記這個型別q=0) ,
    如果Accept-Encoding的值是空, 那麼只有identity是會被接受的型別
    如果Accept-Encoding中的所有型別伺服器都沒發返回, 那麼應該返回406錯誤給客戶端
    如果request中沒有Accept-Encoding 那麼伺服器會假設所有的Encoding都是可以被接受的。
    如果Accept-Encoding中有identity 那麼應該優先返回identity (除非有q值的定義,或者你認為另外一種型別是更有意義的)

注意:
如果伺服器不支援identity 並且瀏覽器沒有傳送Accept-Encoding,那麼伺服器應該傾向於使用HTTP1.0中的 “gzip” and “compress” , 伺服器可能按照客戶端型別 傳送更適合的encoding型別大部分HTTP1.0的客戶端無法處理q值。

Accept-Language
Accept-Language表示瀏覽器所支援的語言型別;

zh-cn表示簡體中文;zh 表示中文;"*"表示萬用字元;

q是權重係數,範圍 0 =< q <= 1,q 值越大,請求越傾向於獲得其“;”之前的型別表示的內容,若沒有指定 q 值,則預設為1,若被賦值為0,則用於提醒伺服器哪些是瀏覽器不接受的內容型別。

Referer
  當瀏覽器向web伺服器傳送請求的時候,一般會帶上Referer,告訴伺服器該網頁是從哪個頁面連結過來的,伺服器因此可以獲得一些資訊用於處理。

相關文章