[轉]Accept-Encoding


原文地址: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進行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM