Какая разница между text/xml vs application/xml для ответа webservice

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

Ответ 1

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

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

(акцент мой)

Ответ 2

Это старый вопрос, но тот, который часто посещают, и четкие рекомендации теперь доступны из RFC 7303, который устарел 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".

Ответ 3

Согласно этой статье приложение /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.

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

Ответ 4

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

Ответ 5

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

когда вы живете в экосистеме платформы .NET → посмотрите на https://referencesource.microsoft.com/#system.web/MimeMapping.cs строку ~ 430:

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

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

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

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