Задать кодировку символов в заголовках HTTP или элементе <meta>, который имеет приоритет? - PullRequest
2 голосов
/ 01 апреля 2012

Я сейчас читаю Погружение в HTML5 , и у меня есть вопрос, касающийся кодировки символов .

Книга начинается с того, что причина здесьЭлемент <meta>, используемый для установки кодировки символов (например, <meta http-equiv="Content-Type" content="text/html; charset=utf-8">), состоит в том, что не у всех есть доступ к веб-серверам, и, следовательно, они не могут установить заголовок HTTP Content-Type, что будет правильным способомсделай это.Хорошо, это имеет большой смысл.

Но затем он продолжает и говорит, что

HTTP-заголовок является предпочтительным методом, и он переопределяет тег <meta>, если присутствует..

Это не имеет смысла.Разве тег <meta> не должен позволять вам переопределять поведение сервера в тех случаях, когда у вас нет к нему доступа?

Ответы [ 2 ]

3 голосов
/ 01 апреля 2012

Метас http-equiv позволяет вам указать значение, если сервер его не отправляет.Они не предназначены для замены конфигурации на стороне сервера, фактически всегда предполагалось, что сервер проанализирует (статический) файл и отправит соответствующий заголовок.Посмотрите на это описание в спецификации HTML 3.2 (январь 1997):

Атрибут HTTP-EQUIV может использоваться вместо атрибута NAME и имеет особое значениекогда документы извлекаются через протокол передачи гипертекста (HTTP).HTTP-серверы могут использовать имя свойства, заданное атрибутом HTTP-EQUIV, для создания заголовка стиля RFC 822 в ответе HTTP.Однако его нельзя использовать для установки определенных заголовков HTTP, см. Подробности в спецификации HTTP.

1 голос
/ 01 апреля 2012

В старые времена идея состояла в том, чтобы серверы могли просматривать содержимое и получать информацию из тегов meta.В основном они этого не делали, и это была странная идея.Случилось так, что серверы не обращают внимания на такие теги (они даже не читают их, поскольку они вообще не анализируют нормальные документы HTML, они просто их доставляют), а браузеры делают.

Серверы обычноиспользуйте какую-то таблицу сопоставления, которая отображает расширения имен файлов на типы мультимедиа, возможно, с параметрами charset, которые будут использоваться в заголовках HTTP.При использовании таких методов, как PHP, заголовки генерируются программным кодом на стороне сервера.

Это оставляет мало места для meta тегов на стороне сервера, но они используются браузерами, когда серверы не предоставляют информацию о кодировке вЗаголовки HTTP или когда ресурсы доступны локально.Современные спецификации HTML отражают это, и в них четко указано, что предпочтение следует отдавать заголовкам HTTP, и именно это делают браузеры.

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