Accept-Encoding
Accept-Encoding 請求 HTTP 頭部指示客戶端可以理解的內容編碼(通常是壓縮演算法)。伺服器使用內容協商來選擇其中一個建議,並使用Content-Encoding響應頭部告知客戶端其選擇。
即使客戶端和伺服器都支援相同的壓縮演算法,如果 identity 值也可用,伺服器可能選擇不壓縮響應主體。兩種常見的情況導致了這種情況
- 要傳送的資料已經壓縮,因此第二次壓縮不會減少傳輸的資料大小。對於預壓縮的影像格式(例如 JPEG)來說這是真的;
- 伺服器負載過重,無法分配計算資源來執行壓縮。例如,微軟建議如果伺服器使用了超過 80% 的計算能力,則不要壓縮。
只要 identity;q=0 或 *;q=0 指令沒有明確禁止表示不進行編碼的 identity 值,伺服器絕不應返回406 Not Acceptable 錯誤。
注意
- IANA 登錄檔維護著官方內容編碼列表。
bzip和bzip2編碼是非標準的,但在某些情況下(包括遺留支援)可以使用。
語法
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
指令
示例
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 表僅在瀏覽器中載入
另請參閱
- HTTP 內容協商
- 包含內容協商結果的頭部:
Content-Encoding - 其他類似的頭部:
TE、Accept、Accept-Language - Brotli 壓縮
- GZip 壓縮
- Zstandard 壓縮