Какое значение типа контента следует отправить для моей XML-карты сайта?


Я думал, что должен отправить "текст / xml", но потом я прочитал, что я должен отправить"приложение/xml". Разве это имеет значение? Может кто-нибудь объяснить разницу?

4 112

4 ответа:

The разницу между text / xml и application / xml является кодировкой символов по умолчанию, если charset параметр ommitted:

Text / xml и application / xml ведут себя по-разному, когда кодировка параметр явно не указан. Если кодировка по умолчанию (т. е., US-ASCII) для текста / xml неудобно по какой-то причине (например, плохой веб серверы), application / xml предоставляет альтернативу (см. "Факультативный параметры " регистрации приложения / xml в разделе 3.2).

на text / xml:

соответствует [RFC2046], если объект text / xml получен с помощью параметр charset опущен, MIME-процессоры и XML-процессоры Необходимо использовать значение кодировки по умолчанию "us-ascii" [ASCII]. По делам где сущность XML MIME передается через HTTP, значение по умолчанию значение кодировки по-прежнему "символа".

на application / xml:

Если получен объект application / xml, где кодировка параметр опущен, информация о параметре не предоставляется кодировка по заголовку типа содержимого MIME. Соответствующем XML-файле процессоры должны следовать требованиям раздела 4.3.3 [XML] это прямо предусматривается. Однако, процессоры МИМ то есть не XML-процессоры не должны предполагать кодировка по умолчанию, если параметр charset опущен из сущности application/xml.

Так что если charset параметр опущен, кодировка символов text / xml Это US-ASCII в то время как с application / xml кодировка символов может быть указан в самом документе.

теперь эмпирическое правило в интернете: "будьте строги с выходом, но будьте терпимы с входом."Это означает, что убедитесь, что соответствуют стандартам как можно больше при доставке данных через интернет. Но построить в некоторых механизмах, чтобы игнорировать ошибки или угадать при получении и интерпретации данных через интернет.

Так что в вашем случае просто выберите один из двух типов (я рекомендую application / xml) и убедитесь, что правильно указали используемую кодировку символов (я рекомендую использовать соответствующую кодировку символов по умолчанию для безопасной игры, поэтому в случае application / xml используйте UTF-8 или UTF-16).

Как правило, самая безопасная ставка на то, чтобы ваш документ правильно обрабатывался всеми веб-серверами, прокси-серверами и клиентскими браузерами, вероятно, заключается в следующем:

  1. используйте тип контента application/xml
  2. включить кодировку символов в тип контента, вероятно, UTF-8
  3. включить соответствующую кодировку символов в атрибут кодировки самого XML-документа.

с точки зрения RFC 3023 spec, что некоторые браузеры не могут реализовать должным образом, основное различие в типах контента заключается в том, как клиенты должны относиться к кодировке символов, следующим образом:

для application/xml, application/xml-dtd, application/xml-external-parsed-entity или любого из подтипов application/xml, таких как application/atom+xml, application/rss+xml или application/rdf+xml, кодировка символов определяется в следующем порядке:

  1. кодировка, заданная в кодировке параметр заголовка HTTP Content-Type
  2. кодировка, заданная в атрибуте кодировки XML-декларации в документе,
  3. utf-8.

для text/xml, text/xml-external-parsed-entity или подтипа, такого как text/foo+xml, атрибут кодировки XML-объявления в документе игнорируется, а кодировка символов:

  1. кодировка, заданная в параметре charset заголовка HTTP Content-Type, или
  2. us-ascii.

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

оба прекрасны.

text / xxx означает, что в случае, если программа не понимает xxx, имеет смысл показать файл пользователю в виде обычного текста. приложение / xxx означает, что его бессмысленно показывать.

обратите внимание, что эти типы контента были первоначально определены для вложения электронной почты, прежде чем они позже использовались в веб-мире.

text / xml - это документы, которые будут иметь смысл для человека, если они представлены в виде текста без дальнейшей обработки, application / xml - это все остальное

каждая XML-сущность подходит для использования с приложением / xml-носителем тип без изменений. Но это не эксплуатирует тот факт, что Во многих случаях XML можно рассматривать как обычный текст. Агенты пользователей MIME (и агенты веб-пользователей), которые не имеют явной поддержки приложение/XML будет рассматривать его как применение / октет-поток, для например, предложив сохранить его в файл.

чтобы указать, что объект XML должен рассматриваться как обычный текст по умолчанию используется тип text/xml-файле медиа. Это ограничивает кодировку используется в XML-сущности для тех, которые совместимы с требования к типам текстовых носителей, описанные в [RFC-2045] и [RFC-2046], например, UTF-8, но не UTF-16 (за исключением HTTP).

- http://www.ietf.org/rfc/rfc2376.txt