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

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

Ответы [ 5 ]

396 голосов
/ 28 января 2011

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

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

(акцент мой)

77 голосов
/ 16 апреля 2015

Это старый вопрос, но его часто посещают, и теперь доступны четкие рекомендации: 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".
30 голосов
/ 16 апреля 2012

Согласно эта статья application / xml является предпочтительной.


EDIT

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

Автор утверждает, что кодировка объявлена ​​в инструкциях по обработке 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. ИМХО, лучше всего следовать семантике удобочитаемости (нечитаемости) и всегда не забывать указывать кодировку.

5 голосов
/ 23 мая 2017

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

0 голосов
/ 20 сентября 2018

не для того, чтобы ответить на ваш вопрос, но чтобы обеспечить простую жизнь:

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

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

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

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

, чтобы правильно получить свой тип mime

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...