В чем разница между Content-Type ... charset = X и Content-Encoding = X? - PullRequest
16 голосов
/ 09 мая 2011

Есть ли эффективная разница между

Content-Encoding: UTF-8
Content-Type: text/html; charset=utf-8

?

Ответы [ 2 ]

17 голосов
/ 09 мая 2011

Необязательный параметр charset имеет смысл только для текстового содержимого (Content-Types, например text/plain, text/html и т. Д.).Не все сообщения являются текстовыми.

Content-Encoding означает, что все тело каким-то образом закодировано (обычно сжато).Типичные значения для этого заголовка: gzip и deflate.Получатель этого сообщения должен декодировать (например, ungzip) тело, чтобы получить исходное сообщение.

Я даже не уверен, имеет ли смысл UTF-8 как значение для Content-Encoding.

10 голосов
/ 05 ноября 2016

Согласно RFC 7231 - Протокол передачи гипертекста (HTTP / 1.1): семантика и контент , заголовок Content-Encoding содержит список кодирования контента ценности. Цитирование RFC :

Значения кодирования содержимого указывают на преобразование кодирования, которое имеет был или может быть применен к представлению. Кодирование контента в основном используется для сжатия представления или в противном случае с пользой трансформируется без потери идентичности Тип носителя и без потери информации. Часто, представление хранится в закодированном виде, передается напрямую и декодируется только конечным получателем.

content-coding = token

Все значения кодирования содержимого нечувствительны к регистру и должны быть зарегистрирован в «Реестре кодирования содержимого HTTP», как определено в Раздел 8.4. Они используются в Accept-Encoding (раздел 5.3.4) и поля заголовка Content-Encoding (раздел 3.1.2.2).

Раздел 8.4 гласит:

«Реестр кодирования содержимого HTTP» определяет пространство имен для содержимого кодирование имен (раздел 4.2 [RFC7230]). Реестр кодирования контента поддерживается на http://www.iana.org/assignments/http-parameters.

Реестр в настоящее время перечисляет:

br           Brotli Compressed Data Format                [RFC7932]     
compress     UNIX "compress" data format                  [RFC7230] Section 4.2.1
deflate      "deflate" compressed data ([RFC1951])        [RFC7230] Section 4.2.2
             inside the "zlib" data format ([RFC1950])
exi          W3C Efficient XML Interchange
gzip         GZIP file format [RFC1952]                   [RFC7230] Section 4.2.3
identity     Reserved (synonym for "no encoding" in       [RFC7231] Section 5.3.4
             Accept-Encoding)
pack200-gzip Network Transfer Format for Java Archives
x-compress   Deprecated (alias for compress)              [RFC7230] Section 4.2.1
x-gzip       Deprecated (alias for gzip)                  [RFC7230] Section 4.2.3

UTF-8 - это схема кодирования символов , которая не может использоваться для преобразования произвольных двоичных данных без потерь (по крайней мере, таким образом, чтобы это не имело никакого смысла). Просто неправильно устанавливать Content-Encoding на UTF-8. Пользовательские агенты могут просто игнорировать неизвестное значение или отклонить сообщение и сообщить об ошибке. Правильным местом для установки схемы кодировки символов является заголовок Content-Type .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...