Я думал, что должен отправить "text/xml", но потом я прочитал, что должен отправить "application/xml". Это имеет значение? Может кто-нибудь объяснить разницу?
Какое значение Content-Type нужно отправить для моей XML-карты?
Ответ 1
Разница между 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).
Ответ 2
Как правило, самая безопасная ставка на то, чтобы ваш документ обрабатывался надлежащим образом всеми веб-серверами, прокси-серверами и клиентскими браузерами, вероятно, следующий:
- Используйте тип содержимого приложения /xml
- Включить кодировку символов в тип содержимого, возможно, UTF-8
- Включить подходящую кодировку символов в атрибут кодирования самого документа XML.
В терминах RFC 3023, которые некоторые браузеры не могут реализовать должным образом, основное различие в типах контента заключается в том, как клиенты предполагается обработать кодировку символов следующим образом:
Для приложения /xml, application/xml-dtd, application/xml-external-parsed-entity или любого из подтипов приложения /xml, таких как application/atom + xml, application/rss + xml или application/rdf + xml, кодировка символов определяется в следующем порядке:
- кодировка, заданная в параметре charset HTTP-заголовка Content-Type
- кодировка, заданная в атрибуте кодирования объявления XML в документе,
- UTF-8.
Для текста /xml, text/xml-external-parsed-entity или подтипа, такого как text/foo + xml, атрибут кодировки объявления XML внутри документа игнорируется, а кодировка символов:
- кодировка, заданная в параметре charset заголовка Content-Type HTTP, или
- US-ASCII.
Большинство парсеров не реализуют спецификацию; они игнорируют HTTP-контекст-тип и просто используют кодировку в документе. С таким количеством плохо сформированных документов, которые вряд ли скоро изменятся.
Ответ 3
оба прекрасны.
text/xxx означает, что в случае, если программа не понимает xxx, имеет смысл показать файл пользователю как обычный текст. application/xxx означает, что его бессмысленно показывать.
Обратите внимание, что эти типы контента были первоначально определены для вложения электронной почты, прежде чем они позже использовались в веб-мире.
Ответ 4
text/xml предназначен для документов, которые были бы значимыми для человека, если бы они были представлены как текст без дальнейшей обработки, application/xml для всего остального
Каждый объект XML подходит для использования со средой application/xml тип без изменений. Но это не использует тот факт, что Во многих случаях XML можно рассматривать как обычный текст. Пользовательские агенты MIME (и агенты веб-пользователей), которые не имеют явной поддержки для application/xml будет обрабатывать его как application/octet-stream, для например, предлагая сохранить его в файле.
Чтобы указать, что объект XML должен рассматриваться как обычный текст по умолчанию используйте текстовый/текстовый тип. Это ограничивает кодирование используемые в XML-сущности для тех, которые совместимы с требования к типам текстовых носителей, описанным в [RFC-2045] и [RFC-2046], например, UTF-8, но не UTF-16 (за исключением HTTP).
Ответ 5
Другие ответы здесь касаются общего вопроса о том, что является правильным Content-Type
для ответа XML, и делают вывод (как и в чем разница между text/xml и application/xml для ответа веб-службы), что и text/xml
и application/xml
допустима. Однако ни один из них не затрагивает вопрос о том, существуют ли какие-либо правила, специфичные для карт сайта.
Ответ: нет. Спецификацией карты сайта является https://www.sitemaps.org, и с помощью Google site:
search вы можете подтвердить, что она нигде не содержит слов или фраз mime, mimetype, type-type, application/xml или text/xml. Другими словами, совершенно не говорится о том, какой Content-Type
следует использовать для обслуживания карт сайта.
В отсутствие каких-либо комментариев в спецификации карты сайта, непосредственно касающихся этого вопроса, мы можем с уверенностью предположить, что применяются те же правила, что и при выборе Content-Type
любого другого XML-документа, т.е. Что это может быть либо text/xml
либо application/xml
,