我以为我应该发送“text / xml”,但后来我读到我应该发送“application / xml”。有关系吗?有人可以解释这个区别吗?
答案 0 :(得分:151)
如果省略 charset 参数,则difference between text/xml and application/xml是默认字符编码:
text / xml和application / xml在charset时表现不同 未明确指定参数。如果是默认字符集(即 用于text / xml的US-ASCII)由于某些原因(例如,糟糕的网络)是不方便的 application / xml提供了另一种选择(参见“可选 参数“在3.2节中的application / xml注册。”
符合[RFC2046],如果接收到text / xml实体 省略了charset参数,MIME处理器和XML处理器 必须使用“us-ascii”[ASCII]的默认字符集值。在案件 XML MIME实体通过HTTP传输的默认设置 charset值仍然是“us-ascii”。
如果收到了一个application / xml实体的字符集 参数被省略,没有提供有关的信息 MIME Content-Type标头的charset。符合XML 处理器必须遵循[XML] 4.3.3节的要求 直接解决这种意外情况。但是,MIME处理器 那些不是XML处理器的人不应该假设一个默认的字符集 application / xml实体中省略了charset参数。
因此,如果省略 charset 参数,则 text / xml 的字符编码为US-ASCII,而 application / xml 则为字符编码编码可以在文档中指定。
现在互联网上的一条经验法则是:“严格控制输出,但要容忍输入。”这意味着确保在通过互联网传输数据时尽可能满足标准。但建立一些机制来忽略错误或猜测何时通过互联网接收和解释数据。
所以在你的情况下只选择两种类型中的一种(我推荐 application / xml )并确保正确指定使用的字符编码(我建议使用相应的默认字符编码来播放安全,所以在 application / xml 的情况下使用UTF-8或UTF-16)。
答案 1 :(得分:24)
根据经验,所有Web服务器,代理和客户端浏览器都能正确处理您的文档的最安全措施可能如下:
就某些浏览器无法正确实现的RFC 3023规范而言,内容类型的主要区别在于客户端应如何处理字符编码,如下所示:
对于application / xml,application / xml-dtd,application / xml-external-parsed-entity,或者application / xml的任何一个子类型,例如application / atom + xml,application / rss + xml或application / rdf + xml,字符编码按以下顺序确定:
对于text / xml,text / xml-external-parsed-entity或text / foo + xml这样的子类型,文档中XML声明的编码属性将被忽略,字符编码为:
大多数解析器都没有实现规范;他们忽略HTTP Context-Type,只使用文档中的编码。有这么多不合格的文件,这不太可能很快改变。
答案 2 :(得分:9)
text / xxx表示如果程序不理解xxx,则将文件作为纯文本显示给用户是有意义的。 application / xxx意味着展示它是毫无意义的。
请注意,这些内容类型最初是为电子邮件附件定义的,之后才会在Web世界中使用。
答案 3 :(得分:6)
text / xml适用于对人类有意义的文档,如果以文本形式呈现而无需进一步处理,则application / xml适用于其他所有文档
每个XML实体都适合与application / xml媒体一起使用 类型无需修改。但这并没有利用这一事实 在许多情况下,XML可以被视为纯文本。 MIME用户代理 (和Web用户代理)没有明确的支持 application / xml会将其视为application / octet-stream,for 例如,提供将其保存到文件中。
表示应将XML实体视为纯文本 默认情况下,使用text / xml媒体类型。这限制了编码 在XML实体中使用的那些与那些兼容的 [RFC-2045]和[RFC-2045]中描述的文本媒体类型的要求 [RFC-2046],例如UTF-8,但不是UTF-16(HTTP除外)。
答案 4 :(得分:0)
这里的其他答案解决了XML响应正确的Content-Type
是什么的一般问题,并得出结论(与What's the difference between text/xml vs application/xml for webservice response一样)text/xml
和application/xml
都是允许的。但是,没有人解决是否有特定于 sitemaps 的规则。
答案:没有。该站点地图规范为https://www.sitemaps.org,使用Google site:
搜索时,您可以确认其中不包含 mime , mimetype ,< em> content-type , application / xml 或 text / xml 随处可见。换句话说,对于应该使用什么Content-Type
来投放站点地图这一话题完全没有提及。
如果站点地图规范中没有任何评论可以直接解决此问题,我们可以安全地假定与选择任何其他XML文档的Content-Type
时使用相同的规则-即它可以是{{ 1}}或text/xml
。