當客戶端省略接受編碼標頭時返回壓縮資料

當客戶端省略接受編碼標頭時返回壓縮資料

在裡面HTTP 1.1 標準,它表示“如果請求中沒有 Accept-Encoding 字段,則用戶代理認為任何內容編碼都可以接受。”

這意味著如果省略了接受編碼字段,伺服器可以傳回 gzip 編碼的回應正文。

但實際上,大多數常用伺服器(例如 Apache、nginx)似乎不會執行此操作,並且如果省略該字段,則會發送未壓縮的回應。

公平地說,更通俗的行為是僅使用客戶端明確建議的編碼嗎?這似乎是一個更合乎邏輯的行動過程——讓客戶端給出它可以處理的編碼清單——儘管違反了標準。

答案1

即使不存在標頭,也不認為編碼是可接受的Accept-Encoding。缺乏任何其他指導,不費心壓縮是常見的選擇。節省工作量,這是規範明確允許的。

如果表示沒有內容編碼,則預設是可接受的,除非接受編碼欄位明確排除了“identity;q=0”或“*;q=0”,而沒有更具體的“identity”條目。

或者,當沒有提供時,Accept-Encoding實作可以透過某種演算法選擇它想要的任何內容。跳過內容協商存在客戶端不知道如何處理編碼的輕微風險。就我個人而言,我願意,Content-Encoding: zstd但截至 2022 年,這在用戶代理中並不常見。

相關內容