Entity Headers (рус.Заголовки сущности) — сопровождают каждую сущность сообщения. Используются в запросах и ответах.
Именно в таком порядке рекомендуется посылать заголовки получателю (программно это не имеет значения, однако даёт удобство при отладке).
Сущности и, соответственно, их заголовки могут находиться как в запросах, так и в ответах (при этом в ответе некоторые заголовки могут присутствовать, а в запросе — отсутствовать или наоборот).
Следует отметить, что некоторые заголовки могут относиться сразу к нескольким группам (например, Content-Disposition).
Обзорная таблица
В нижеследующей обзорной таблице каждая строка данных соответствует конкретному заголовку, а часть столбцов отведена под их группы.
Таблица была составлена на основе анализа зафиксированных в RFC полей заголовка.
Такая матрица была сделана для людей, которым важна совместимость версий и динамика.
С выходом обновлений протокола некоторые заголовки переносились из одной группы в другую (зачёркнутым «Да» отмечено, куда они входили до этого).
Некоторые заголовки были полностью исключены, и по зачёркнутым «Да» можно узнать, в какой группе они находились перед исключением.
У некоторых заголовков есть несколько зачёркнутых «Да» (например, URI) — такие заголовки сначала были введены в одной группе, потом перенесены, а позднее вовсе отменены.
В колонке «Заголовок» также имеется своё кодирование.
Например, полностью исключённые заголовки зачёркнуты, а предлагаемые к исключению помечены курсивом.
Легенда
Краткое обозначение
Трактовка
Да
Заголовок сейчас относится к указанной в колонке группе.
Нет
Заголовок никогда не относился к данной группе.
Да
Заголовок раньше относился к данной группе. Если в строке есть зелёное «Да», то его перенесли в другую группу (зачёркнутое — откуда был перенесен). Если же в строке только зачёркнутое «Да» и обычное «Нет», то заголовок вообще был убран. Если несколько зачёркнутых, то заголовок переносился, а потом был вообще убран.
Да
Говорит о сомнении. Если на строке только «Нет», то заголовок только собираются включить в протокол (при этом можно уже использовать). Если на строке есть ещё и «Да», то хотят перенести его в другую группу, но ещё окончательно не решено.
Полный или относительный URI ресурса, с которого клиент сделал текущий запрос. Если указан относительный, то полный определяется по запрашиваемому URI. Клиенты не должны включать в значение Referer указатель фрагмента (часть URI после символа решетки «#»). Также нельзя включать ссылки на ресурсы, не имеющие собственного URI (например, ввод адреса с клавиатуры).
Указывает программное обеспечение клиента и его характеристики. Аналогичным ему является Server для серверов и Via для прокси.
Заголовки ответа
Заголовки ответа (англ.Response Headers) включаются только в ответы сервера.
Allow
Список поддерживаемых методов всего сервера или конкретного ресурса. Посылается сервером вместе со статусами 405 и 501, а также в ответе на метод OPTIONS.
Пример: Allow: GET, HEAD, OPTIONS
Заголовки сущности
Заголовки сущности (англ.Entity Headers) — заголовки, сопровождающие каждую сущность как в запросах клиента, так и в ответах сервера. Тем не менее, наличие некоторых бессмыслено в заголовках запросов (например, Expires). В отдельный класс заголовки сущности выделены для того, чтобы не путать их с заголовками запроса или заголовками ответа при передаче множественного содержимого (multipart/*). Заголовки запроса и ответа как и основные заголовки описывают всё сообщение в целом и размещаются только в начальном блоке заголовков, в то время как заголовки сущности характеризуют содержимое каждой части в отдельности располагаясь непосредственно перед её телом.
Content-Language
Указывает один или несколько естественных языков содержимого, для носителей которых оно предназначается.
Языки перечисляются через запятую, порядок значения не имеет.
Если данный заголовок опущен, то предполагается, что содержимое предназначено для людей, понимающих любой язык (или же язык вообще значения не имеет).
При этом возможно, что человек не отыщет там информацию на понятном ему языке.
Обратите внимание, что в этом поле следует указывать не все используемые в документе языки, а только те, которые, по вашему мнению, понимает конечный пользователь.
Например, если это страница учебника по английскому языку для русскоговорящей аудитории, то указывать следует только русский язык, так как для англоговорящих людей она не нужна.
А если это страница с сообщением об ошибке на двух языках, то указывать нужно оба.
В RFC сказано, что язык содержимого можно указывать для любых медиатипов, а не только для текста.
Например, если это видео, где люди говорят на английском, в котором сбоку расположено окошко с сурдопереводом на амслене, а внизу расположен перевод субтитрами на русском, то заголовок Content-Language должен иметь значение «en, ase, ru».
При этом, если это видео, где герои говорят на японском, и присутствует голосовой перевод на русском, то следует указать только русский язык, так как японцам, скорее всего, будет трудно расслышать родную речь.
Заголовок Content-Language описан не только в основных спецификациях по протоколу HTTP, но и в отдельной RFC 3282 «Content Language Headers».
Все названия языков регистрируются в IANA.
Ссылку на их реестр вы найдёте в конце данной статьи.
RFC 5646 Best current practice «Tags for Identifying Languages» (англ.) (русск. «Метки для обозначения языков»); IETF, сентябрь 2009; Phillips A. (Lab126), Davis M. (Google).
Language Subtag Registry(англ.). IANA (13 января 2010). — реестр зарегистрированных языковых меток. Дата обращения: 15 января 2010. Архивировано 17 марта 2012 года.