Accept-Encoding

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

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

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

До тих пір, поки значення identity (тобто без кодування) явно не заборонено identity;q=0 або *;q=0 без іншого явно заданого значення для ідентифікації, сервер ніколи не повинен відправляти назад помилку 406 (en-US) 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)
Будь-яке значення розміщується в порядку переваги, що виражається з використанням відносної величини якості (en-US), званої вагою.

Приклади

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

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

BCD tables only load in the browser

Див. також