Accept-Encoding

HTTP-заголовок запиту Accept-Encoding вказує, яке кодування контенту може зрозуміти клієнт. Зазвичай це вказує на алгоритм стиснення. Використовуючи узгодження вмісту, сервер вибирає одну з пропозицій, використовує її та інформує клієнта про вибір за допомогою заголовка відповіді Content-Encoding.

Навіть якщо клієнт і сервер підтримують однакові алгоритми стиснення, сервер може не стискати тіло відповіді, якщо значення identity також є прийнятним. Два загальні випадки призводять до цього:

  • Дані, які потрібно надіслати, вже стиснуті, а друге стиснення не призведе до передачі менших даних. Це може бути у випадку з деякими форматами зображень;
  • Сервер перевантажений і не може дозволити собі накладні витрати, спричинені вимогою стиснення. Як правило, Microsoft рекомендує не стискати вміст, якщо сервер використовує більше 80% своєї обчислювальної потужності.

До тих пір, поки значення identity (тобто без кодування) явно не заборонено identity;q=0 або *;q=0 без іншого явно заданого значення для ідентифікації, сервер ніколи не повинен відправляти назад помилку 406 Not Acceptable .

Примітка:
  • Реєстр IANA підтримує повний перелік офіційних кодувань вмісту. 

  • Іноді використовуються два інші кодування вмісту, bzip і bzip2, хоч вони не є стандартними. Ці кодування  реалізують алгоритм, використовуваний одноіменними програмами UNIX. Зверніть увагу, що перша була припинена через проблеми ліцензування патенту.
Тип заголовку Request header
Forbidden header name так

Синтаксис

Accept-Encoding: gzip
Accept-Encoding: compress
Accept-Encoding: deflate
Accept-Encoding: br
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 coding (LZ77), з 32-bit CRC.
compress
Формат стиснення, що використовує алгоритм Lempel-Ziv-Welch (LZW) .
deflate
Формат стиснення, що використовує структуру zlib, з алгоритмом стиснення deflate.
br
Формат стиснення, що використовує алгоритм Brotli .
identity
Позначає функцію ідентичності (тобто не стискати, не змінювати). Це значення завжди вважається прийнятним, навіть воно не вказане.
*
Відповідає будь-якому кодуванню вмісту, який ще не вказано в заголовку. Це значення є типовим, якщо заголовку немає. Це не значить, що будь-який алгоритм підтримується, просто не висловлюється жодних переваг.
;q= (qvalues weighting)
Будь-яке значення розміщується в порядку переваги, що виражається з використанням відносної величини якості, званої вагою.

Приклади

Accept-Encoding: gzip

Accept-Encoding: gzip, compress, br

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

Специфікації

Specification Title
RFC 7231, section 5.3.4: Accept-Encoding Hypertext Transfer Protocol (HTTP/1.1): Semantics and Context

Сумісність з браузерами

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
Accept-EncodingChrome Full support YesEdge Full support YesFirefox Full support YesIE Full support YesOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support YesOpera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes

Legend

Full support  
Full support

Див. також