В HTTP вы можете указать в запросе, что ваш клиент может принимать определенный контент в ответах, используя заголовок accept
со значениями, такими как application/xml
.Спецификация типа контента позволяет вам включать параметры в тип контента, такие как charset=utf-8
, указывая, что вы можете принимать контент с указанным набором символов.
Существует также заголовок accept-charset
, который определяеткодировки символов, которые принимаются клиентом.
Если указаны оба заголовка, а заголовок accept
содержит типы содержимого с параметром charset, который должен рассматриваться сервером как верхний заголовок?
Например:
Accept: application/xml; q=1,
text/plain; charset=ISO-8859-1; q=0.8
Accept-Charset: UTF-8
Я отправил несколько примеров запросов на различные серверы, используя Fiddler, чтобы проверить, как они отвечают:
Примеры
W3
Запрос
GET http://www.w3.org/ HTTP/1.1
Host: www.w3.org
Accept: text/html;charset=UTF-8
Accept-Charset: ISO-8859-1
Ответ
Content-Type: text/html; charset=utf-8
Google
Запрос
GET http://www.google.co.uk/ HTTP/1.1
Host: www.google.co.uk
Accept: text/html;charset=UTF-8
Accept-Charset: ISO-8859-1
Ответ
Content-Type: text/html; charset=ISO-8859-1
StackOverflow
Запрос
GET http://stackoverflow.com/ HTTP/1.1
Host: stackoverflow.com
Accept: text/html;charset=UTF-8
Accept-Charset: ISO-8859-1
Ответ
Content-Type: text/html; charset=utf-8
Microsoft
Запрос
GET http://www.microsoft.com/ HTTP/1.1
Host: www.microsoft.com
Accept: text/html;charset=UTF-8
Accept-Charset: ISO-8859-1
Ответ
Content-Type: text/html
Есть ДоуПохоже, нет никакого консенсуса относительно ожидаемого поведения.Я пытаюсь выглядеть удивленным.