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
?
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".
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)
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.
application/xml
est vu par svn
comme binaire tapez alors que text/xml
comme fichier text pour lequel un diff peut être affiché.
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