Существует ли какая-либо эффективная разница между
Content-Encoding: UTF-8
Content-Type: text/html; charset=utf-8
?
Существует ли какая-либо эффективная разница между
Content-Encoding: UTF-8
Content-Type: text/html; charset=utf-8
?
Необязательный параметр charset
имеет смысл только для текстового контента (Content-Types
например text/plain
, text/html
и т.д.). Не все сообщения являются текстовыми.
Content-Encoding
означает, что все тело каким-то образом закодировано (обычно сжато). Типичными значениями для этого заголовка являются gzip
и deflate
. Получатель этого сообщения должен декодировать (например, ungzip) тело, чтобы получить исходное сообщение.
Я даже не уверен, имеет ли смысл UTF-8
в качестве значения для Content-Encoding
.
Согласно 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
.