web-dev-qa-db-fra.com

Quelle est la différence entre text/xml et application/xml pour la réponse du service Web?

Il s’agit plus d’une question générale sur la différence entre text/xml et application/xml. Je suis assez nouveau pour écrire des services Web (REST - Jersey). Je produis application/xml car c’est ce qui apparaît dans la plupart des tutoriels/exemples de code que j’ai utilisés pour apprendre, mais j’ai récemment découvert le text/xml et je me demandais en quoi elle était différente et quand l’utiliseriez-vous sur application/xml?

412
Mike

C'est une vieille question, mais celle-ci est fréquemment visitée et des recommandations claires sont maintenant disponibles dans RFC 7303 , qui rend obsolète le RFC3023. En résumé (section 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".
61
DaveV

De la RFC ( 3023 ), sous la section 3, Types de média XML:

S'il s'agit d'un document XML, c'est-à-dire du document XML source non traité - est lisible par les utilisateurs occasionnels, text/xml est préférable à application/xml. Agents d'utilisateur MIME (et agents d'utilisateur Web) qui n'en ont pas avoir un support explicite pour text/xml le traitera comme text/plain, pour Par exemple, en affichant l'entité XML MIME sous forme de texte brut . Application/xml est préférable lorsque l'entité XML MIME est illisible par les utilisateurs occasionnels.

(c'est moi qui souligne)

388
Oded

Selon cet article application/xml est préféré.


MODIFIER

J'ai fait un petit suivi de l'article. 

L'auteur affirme que le codage déclaré dans les instructions de traitement XML, comme:

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

peut être ignoré lorsque le type de média text/xml est utilisé.

Ils soutiennent la thèse avec la définition de la spécification de la famille de types text/*MIME dans RFC 2046 , plus précisément du fragment suivant:

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.

Selon eux, de telles difficultés peuvent être évitées en utilisant le type application/xml MIME. Que ce soit vrai ou non, je n'irais pas jusqu'à éviter text/xml. IMHO, il est préférable de suivre la sémantique de la lisibilité humaine (non lisibilité) et de toujours spécifier le jeu de caractères.

30
hardywang

application/xml est vu par svn comme binaire tapez alors que text/xml comme fichier text pour lequel un diff peut être affiché.

5
Michał Kawiecki

non pas pour répondre à votre question, mais pour vivre simplement:

lorsque vous vivez dans l'écosystème .NET Framework -> consultez https://referencesource.Microsoft.com/#system.web/MimeMapping.cs line ~ 430:

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

donc tu peux toujours faire

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

pour obtenir votre type MIME correctement

0
Bernhard