1. 程式人生 > >[轉]Accept-Encoding

[轉]Accept-Encoding

ont 顯示 zip accept ESS bsp 註意 可能 Coding

原文地址:https://blog.csdn.net/sqzhao/article/details/49499471

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-Encoding,都會返回壓縮數據,所以還是要對response的Content-Encoding進行

[轉]Accept-Encoding