HTTP Header中Accept-Encoding 是瀏覽器發給服務器,聲明瀏覽器支持的編碼類型[1]
常見的有
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錯誤給客戶Duan
如果request中沒有Accept-Encoding 那麽服務器會假設所有的Encoding都是可以被接受的。
如果Accept-Encoding中有identity 那麽應該優先返回identity (除非有q值的定義,或者妳認為另外壹種類型是更有意義的)
註意:
如果服務器不支持identity 並且瀏覽器沒有發送Accept-Encoding,那麽服務器應該傾向於使用HTTP1.0中的 "gzip" and "compress" , 服務器可能按照客戶Duan類型 發送更適合的encoding類型大部分HTTP1.0的客戶Duan無法處理q值。