В чем разница между text/xml и application/xml для ответа веб-службы

Это более общий вопрос о разнице между text/xml а также application/xml, Я довольно новичок в написании веб-сервисов (REST - Джерси). Я продюсировал application/xml так как это то, что проявляется в большинстве учебных пособий / примеров кода, которые я использовал для изучения, но недавно я узнал о text/xml и было интересно, что отличается от этого, и когда бы вы использовали его над application/xml?

6 ответов

Решение

Из RFC ( 3023), в разделе 3, Типы носителей XML:

Если XML-документ, то есть необработанный исходный XML-документ, доступен для чтения случайным пользователям, text / xml предпочтительнее application/xml. Пользовательские агенты MIME (и пользовательские веб-агенты), которые не имеют явной поддержки text / xml, будут обрабатывать его как text / plain, например, при отображении сущности XML MIME в виде простого текста. Application / xml предпочтительнее, когда сущность XML MIME не читается случайными пользователями.

(акцент мой)

Это старый вопрос, но тот, который часто посещают, и четкие рекомендации теперь доступны из RFC7303, который устарел RFC3023. В двух словах (раздел 9.2):

The registration information for text/xml is in all respects the same
as that given for application/xml above (Section 9.1), except that
the "Type name" is "text".

Согласно этой статье приложение / XML является предпочтительным.


РЕДАКТИРОВАТЬ

Я сделал небольшое продолжение статьи.

Автор утверждает, что кодировка объявлена ​​в инструкциях по обработке XML, например:

<?xml version="1.0" encoding="UTF-8"?>

можно игнорировать, когда text/xml тип носителя используется.

Они поддерживают тезис с определением text/* Спецификация семейства MIME-типов в RFC 2046, а именно следующий фрагмент:

4.1.2.  Charset Parameter

   A critical parameter that may be specified in the Content-Type field
   for "text/plain" data is the character set.  This is specified with a
   "charset" parameter, as in:

     Content-type: text/plain; charset=iso-8859-1

   Unlike some other parameter values, the values of the charset
   parameter are NOT case sensitive.  The default character set, which
   must be assumed in the absence of a charset parameter, is US-ASCII.

   The specification for any future subtypes of "text" must specify
   whether or not they will also utilize a "charset" parameter, and may
   possibly restrict its values as well.  For other subtypes of "text"
   than "text/plain", the semantics of the "charset" parameter should be
   defined to be identical to those specified here for "text/plain",
   i.e., the body consists entirely of characters in the given charset.
   In particular, definers of future "text" subtypes should pay close
   attention to the implications of multioctet character sets for their
   subtype definitions.

По их словам, таких трудностей можно избежать при использовании application/xml MIME тип. Будь это правда или нет, я бы не пошел так далеко, чтобы избежать text/xml, ИМХО, лучше всего следовать семантике удобочитаемости (нечитаемости) и всегда не забывать указывать кодировку.

application/xml видно по svn как двоичный тип, тогда как text/xml в виде текстового файла, для которого может отображаться разница.

Веб-браузеры отображают text/plain как обычный текст, в то время как большинство браузеров будут анализировать application/xml в дереве данных с подсветкой синтаксиса или даже идти дальше и применять преобразование, объявленное с помощью XSLT. Некоторые браузеры отключают рендеринг приложения/xml в виде дерева данных при обнаружении ошибки, но всегда отображают текст/xml полностью, независимо от ошибок в синтаксисе.

Не для ответа на ваш вопрос, а для обеспечения простой жизни:

когда вы живете в экосистеме платформы.NET -> посмотрите на https://referencesource.microsoft.com/ строку ~430:

AddMapping(".xml", "text/xml");

так что вы всегда можете сделать

string mimeType = System.Web.MimeMapping.GetMimeMapping(string yourFileName)

чтобы правильно определить ваш миметип

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