php知識點3-HTTP 頭部-Accept-Encoding
1.概述
Accept-Encoding 是瀏覽器發給伺服器,宣告瀏覽器支援的編碼型別的。
2.伺服器處理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進行監測。
2.例子
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