web服务响应的text/xml和application/xml之间的区别是什么

这是一个关于text/xmlapplication/xml之间区别的一般性问题。 对于编写web服务(REST - Jersey),我还是个新手。我一直在生产application/xml,因为它出现在大多数教程/代码示例中,我一直在用它来学习,但我最近发现了text/xml,想知道它有什么不同,什么时候你会使用它超过application/xml?< / p >
321894 次浏览

从RFC (3023),在第3节,XML媒体类型:

如果是XML文档——即未处理的源XML文档 普通用户选择是可读的text / xml更可取 应用程序/ xml。MIME用户代理(和web用户代理)不这样做 有明确的支持文本/xml将它视为文本/纯,为 例如,通过将XML MIME实体显示为纯文本。 当xml MIME实体不可读时,Application/xml是可取的

(强调我的)

根据这篇文章应用程序/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。以我之见,最好遵循人类可读性(非可读性)的语义,并始终记得指定字符集。

这是一个老问题,但它经常被访问,现在可以从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".

application/xmlsvn视为二进制类型,而text/xml视为文本文件,其中可以显示一个差异。

Web浏览器将文本/纯文本显示为明文,而大多数浏览器将应用程序/xml解析为数据树,并突出显示语法,甚至进一步应用使用XSLT声明的转换。当检测到错误时,一些浏览器会切断将application/xml作为数据树呈现,但无论语法错误如何,都会完整地显示text/xml。