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 |
Сумісність з браузерами
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Accept-Encoding | Chrome Full support Yes | Edge Full support Yes | Firefox Full support Yes | IE Full support Yes | Opera Full support Yes | Safari Full support Yes | WebView Android Full support Yes | Chrome Android Full support Yes | Firefox Android Full support Yes | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support Yes |
Legend
- Full support
- Full support
Див. також
- HTTP content negotiation
- Header with the result of the content negotiation:
Content-Encoding
- Other similar headers:
TE
,Accept
,Accept-Charset
,Accept-Language