Правильное размещение тегов META с атрибутом http-эквивалент? - PullRequest
1 голос
/ 16 июля 2010

Я внедряю Bing Maps на страницу (я бы предпочел Google Maps, но это не мой выбор). Я следую учебному пособию, которое MS предоставляет здесь: http://msdn.microsoft.com/en-us/library/bb412551.aspx

Используя код MS, все работало просто отлично. Опираясь на это с помощью своего собственного кода jQuery, я обнаружил, что получаю ошибку «Отказано в доступе» каждый раз, когда я запускаю $ .get (); Я предположил, что это был своего рода конфликт "одного и того же происхождения", но после долгих проверок я решил, что не запрашиваю ничего с любого другого хоста (даже с www.example.com против example.com - все было на одном и том же месте). хостов).

После большого разочарования я, наконец, свел причину к мета-тегу в коде MS:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Это было в нижней части моего раздела HEAD. При чтении спец. для тега META (с которым я не очень хорошо знаком) я обнаружил, что некоторые серверы могут преобразовывать теги http-эквивалент непосредственно в заголовки HTTP, в то время как другие могут просто отправлять их как есть. Поскольку я считаю, что заголовки необходимо отправлять перед любым содержимым, я переместил тег META в начало раздела HEAD, и все заработало нормально.

Еще одна деталь: у меня были проблемы только в IE7. Когда я тестировал в FF, у меня не было никаких проблем.

Итак, вот мой вопрос: мета-теги с атрибутом http-эквивалент ДОЛЖНЫ быть в начале раздела HEAD? IE был просто странным? Или FF просто прощал?

Спасибо!

1 Ответ

1 голос
/ 16 июля 2010

Из спецификации проекта HTML5 (http://dev.w3.org/html5/spec/semantics.html#charset):

4.2.5 Метаэлемент

[надрез]

4.2.5.5 Указание кодировки символов документа

Статус: последний звонок для комментариев

Объявление кодировки символов - это механизм, с помощью которого указывается кодировка символов, используемая для хранения или передачи документа.

Следующие ограничения применяются к объявления кодировки символов:

* The character encoding name given must be the name of the character encoding 
  used to serialize the file.
* The value must be a valid character encoding name, and must be an ASCII
  case-insensitive match for the preferred MIME name for that encoding. 
  [IANACHARSET]
* The character encoding declaration must be serialized without the use of 
  character references or character escapes of any kind.
* The element containing the character encoding declaration must be serialized
  completely within the first 512 bytes of the document.
* There can only be one character encoding declaration in the document.

Обратите внимание на четвертую точку маркера. Я считаю, что 512-байтовое правило было компромиссом между устаревшими браузерами, которые в прошлом выбирали разные ограничения, но все, я думаю, имели ограничение в байтах некоторой длины. Это может быть причиной, хотя, почему это должно вызвать ошибку «Отказано в доступе», я понятия не имею.

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