What Content-Type value should I send for my XML sitemap?

I thought I should send "text/xml", but then I read that I should send "application/xml". Это имеет значение? Может кто-нибудь объяснить разницу?

5 ответов

Решение

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

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

Для текста / XML:

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

Для приложения / XML:

Если объект application/xml получен там, где параметр charset опущен, информация о charset не предоставляется заголовком MIME Content-Type. Соответствующие процессоры XML ДОЛЖНЫ следовать требованиям в разделе 4.3.3 [XML], которые непосредственно устраняют эту непредвиденную ситуацию. Однако процессорам MIME, которые не являются процессорами XML, НЕ СЛЕДУЕТ использовать набор символов по умолчанию, если параметр charset опущен в объекте application/xml.

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

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

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

As a rule of thumb, the safest bet towards making your document be treated properly by all web servers, proxies, and client browsers, is probably the following:

  1. Use the application/xml content type
  2. Include a character encoding in the content type, probably UTF-8
  3. Include a matching character encoding in the encoding attribute of the XML document itself.

In terms of the RFC 3023 spec, which some browsers fail to implement properly, the major difference in the content types is in how clients are supposed to treat the character encoding, as follows:

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

  1. кодировка, указанная в параметре charset 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, имеет смысл показать файл пользователю в виде простого текста. application/xxx означает, что показывать его бессмысленно.

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

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

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

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

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

Другие ответы здесь касаются общего вопроса о том, что собственно Content-Type для XML-ответа есть, и заключите (как и в чем разница между text/xml и application/xml для ответа веб-службы), что оба text/xml а также application/xml допустимы Однако ни один из них не затрагивает вопрос о том, существуют ли какие-либо правила, специфичные для карт сайта.

Ответ: нет. Спецификация карты сайта - https://www.sitemaps.org/, и с использованием Google site: поиск вы можете подтвердить, что он не содержит ни слова, ни фразы mime, mimetype, content-type, application/xml или text/xml. Другими словами, совершенно не говорится о том, что Content-Type следует использовать для обслуживания карт сайта.

При отсутствии каких-либо комментариев в спецификации карты сайта, непосредственно касающихся этого вопроса, мы можем с уверенностью предположить, что применяются те же правила, что и при выборе Content-Type любого другого документа XML - то есть, что это может быть text/xml или же application/xml,

Другие вопросы по тегам