Spec-Zone.ru › HTTP

Заголовки: Transfer-Encoding

Заголовок Transfer-Encoding

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает на множестве устройств и в разных версиях браузеров. Она поддерживается браузерами с июля 2015 года.

  • Подробнее
  • Полная информация о совместимости
>

HTTP-заголовок Transfer-Encoding запроса и ответа определяет форму кодирования, используемую для передачи сообщений между узлами сети.

Transfer-Encoding — это транзитный заголовок, который применяется к сообщению между двумя узлами, а не к самому ресурсу. Для каждого участка соединения с несколькими узлами могут использоваться разные значения Transfer-Encoding. Если необходимо сжать данные на протяжении всего соединения, вместо него используйте сквозной заголовок Content-Encoding.

На практике этот заголовок используется редко, и в таких случаях почти всегда вместе с chunked.

Тем не менее в спецификации указано, что при наличии этого заголовка в сообщении он указывает способ сжатия сообщения на данном участке и/или на то, было ли сообщение разбито на фрагменты. Например, Transfer-Encoding: gzip, chunked указывает, что содержимое было сжато с помощью кодирования gzip, а затем разбито на фрагменты с помощью кодирования chunked при формировании тела сообщения.

В ответах на запрос HEAD этот заголовок не обязателен, поскольку такие сообщения не содержат тела и, следовательно, не используют кодирование передачи. Если заголовок присутствует, он указывает значение, которое применялось бы к соответствующему ответу на сообщение GET, если бы этот запрос GET не содержал предпочтительного значения Transfer-Encoding.

Предупреждение: HTTP/2 запрещает любое использование заголовка Transfer-Encoding. В HTTP/2 и более поздних версиях предусмотрены более эффективные механизмы потоковой передачи данных, чем передача с разбиением на фрагменты. Использование этого заголовка в HTTP/2, вероятно, приведёт к определённой protocol error.

Тип заголовка Заголовок запроса, заголовок ответа, заголовок содержимого
Запрещённый заголовок запроса Да

Синтаксис

Transfer-Encoding: chunked
Transfer-Encoding: compress
Transfer-Encoding: deflate
Transfer-Encoding: gzip

// Several values can be listed, separated by a comma
Transfer-Encoding: gzip, chunked

Директивы

chunked

Данные передаются серией фрагментов. Содержимое можно передавать потоком неизвестного размера в виде последовательности буферов с указанием длины, чтобы отправитель мог поддерживать соединение открытым и сообщить получателю о завершении передачи всего сообщения. Заголовок Content-Length необходимо опустить. В начале каждого фрагмента строка шестнадцатеричных цифр указывает размер данных фрагмента в октетах; за ней следуют \r\n, сам фрагмент и ещё один \r\n. Завершающий фрагмент имеет нулевую длину.

compress

Формат, использующий алгоритм Lempel-Ziv-Welch (LZW). Название значения взято из программы UNIX compress, в которой реализован этот алгоритм. Как и программа compress, исчезнувшая из большинства дистрибутивов UNIX, это кодирование содержимого сегодня практически не используется браузерами, отчасти из-за патентных ограничений (срок действия патента истёк в 2003 году).

deflate

Используется структура zlib (определённая в RFC 1950) и алгоритм сжатия deflate (определённый в RFC 1951).

gzip

Формат, использующий кодирование Lempel-Ziv (LZ77) с 32-битной контрольной суммой CRC. Изначально это формат программы UNIX gzip. Стандарт HTTP/1.1 также рекомендует серверам, поддерживающим это кодирование содержимого, распознавать x-gzip как его псевдоним для обеспечения совместимости.

Примеры

>

Ответ с кодированием chunked

Кодирование chunked полезно, когда клиенту передаётся большой объём данных, а общий размер ответа может быть неизвестен до завершения обработки запроса. Например, при формировании большой HTML-таблицы по результатам запроса к базе данных или при передаче изображений большого размера. Ответ с кодированием chunked выглядит так:

HTTP/1.1 200 OK
Content-Type: text/plain
Transfer-Encoding: chunked

7\r\n
Welcome\r\n
1c\r\n
to Mozilla Developer Network\r\n
0\r\n
\r\n

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

Спецификация
HTTP/1.1>
# field.transfer-encoding>

Совместимость с браузерами

Настольные Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android WebView на iOS
Transfer-Encoding 1 12 1 15 1 18 4 14 1 1.0 4.4 1

См. также

  • Accept-Encoding
  • Content-Encoding
  • Content-Length
  • Передача с разбиением на фрагменты

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Transfer-Encoding

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API