Accept-Encoding

Accept-Encoding 請求 HTTP 頭部指示客戶端可以理解的內容編碼(通常是壓縮演算法)。伺服器使用內容協商來選擇其中一個建議,並使用Content-Encoding響應頭部告知客戶端其選擇。

即使客戶端和伺服器都支援相同的壓縮演算法,如果 identity 值也可用,伺服器可能選擇不壓縮響應主體。兩種常見的情況導致了這種情況

  • 要傳送的資料已經壓縮,因此第二次壓縮不會減少傳輸的資料大小。對於預壓縮的影像格式(例如 JPEG)來說這是真的;
  • 伺服器負載過重,無法分配計算資源來執行壓縮。例如,微軟建議如果伺服器使用了超過 80% 的計算能力,則不要壓縮。

只要 identity;q=0*;q=0 指令沒有明確禁止表示不進行編碼的 identity 值,伺服器絕不應返回406 Not Acceptable 錯誤。

注意

  • IANA 登錄檔維護著官方內容編碼列表
  • bzipbzip2 編碼是非標準的,但在某些情況下(包括遺留支援)可以使用。
頭部型別 請求頭部
禁止的頭部名稱

語法

http
Accept-Encoding: gzip
Accept-Encoding: compress
Accept-Encoding: deflate
Accept-Encoding: br
Accept-Encoding: zstd
Accept-Encoding: identity
Accept-Encoding: *

// Multiple algorithms, weighted with the quality value syntax:
Accept-Encoding: deflate, gzip;q=1.0, *;q=0.5

指令

gzip

使用Lempel-Ziv 編碼 (LZ77) 和 32 位 CRC 的壓縮格式。

compress

使用Lempel-Ziv-Welch (LZW) 演算法的壓縮格式。

deflate

使用zlib 結構和deflate 壓縮演算法的壓縮格式。

br

使用Brotli 演算法的壓縮格式。

zstd

使用Zstandard 演算法的壓縮格式。

identity

表示恆等函式(即,沒有修改或壓縮)。即使省略,此值也始終被認為是可接受的。

*

匹配頭部中未列出的任何內容編碼。如果頭部不存在,這是預設值。此指令不建議支援任何演算法,而是表示沒有表達偏好。

;q= (qvalues 加權)

任何值都按使用稱為權重的相對質量值表達的偏好順序排列。

示例

http
Accept-Encoding: gzip

Accept-Encoding: gzip, compress, br

Accept-Encoding: gzip, compress, br, zstd

Accept-Encoding: br;q=1.0, gzip;q=0.8, *;q=0.1

規範

規範
HTTP 語義
# field.accept-encoding

瀏覽器相容性

BCD 表僅在瀏覽器中載入

另請參閱