我应该为我的 XML 站点地图发送什么内容类型值?

我认为我应该发送“ text/xml”,但后来我读到我应该发送“ application/xml”。这重要吗?有人能解释一下这其中的区别吗?

143241 次浏览

Text/xml 适用于那些如果以文本形式呈现而不需要进一步处理就对人类有意义的文档,application/xml 适用于所有其他文档

每个 XML 实体都适合与 application/XML 媒体一起使用 类型。但是这并没有利用这样一个事实 在许多情况下,XML 可以被视为纯文本 (和 web 用户代理) ,没有明确的支持 Application/xml 将其视为 application/octet-stream,用于 例如,通过提供将其保存到一个文件。

指示应将 XML 实体视为纯文本 默认情况下,使用 text/xml 媒体类型 实体中用于与 [ RFC-2045]及 [ RFC-2046] ,例如 UTF-8,但不是 UTF-16(HTTP 除外)。

http://www.ietf.org/rfc/rfc2376.txt

都很好。

Text/xxx 意味着,如果程序不理解 xxx,将文件显示为纯文本是有意义的。Application/xxx 意味着显示它毫无意义。

请注意,这些内容类型最初是为 E-Mail 附件定义的,后来才在 Web 世界中使用。

如果省略 Charset参数,则默认字符编码为 < em > text/xml 和 < em > application/xml 之间的区别:

当字符集 参数没有显式指定, 对于 text/xml 来说,由于某些原因(例如,糟糕的 web) ,使用 US-ASCII 是不方便的 ) ,application/xml 提供了一个替代方案(请参阅 参数」)。

对于 < em > text/xml :

符合[ RFC2046] ,如果文本/xml 实体接收到 字符集参数省略,MIME 处理器和 XML 处理器 必须使用默认的字符集值“ us-ASCII”[ ASCII ] 其中的 XML MIME 实体是通过 HTTP 传输的,默认的 字符值仍然是“ us-ascii”。

对于 < em > application/xml :

如果接收到一个 application/xml 实体,其中字符集 参数,则不提供有关 由 MIME 内容类型标头设置的字符集 处理器必须遵循[ 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. 使用 application/xml 内容类型
  2. 在内容类型中包含一个字符编码,可能是 UTF-8
  3. 在 XML 文档本身的编码属性中包含一个匹配的字符编码。

就某些浏览器未能正确实现的 RFC 3023规范而言,内容类型的主要区别在于客户端应该如何对待字符编码,具体如下:

对于 application/xml、 application/xml-dtd、 application/xml-foreign-parsed-tity 或 application/xml 的任何一个子类型,例如 application/atom + xml、 application/rss + xml 或 application/rdf + xml,其字符编码是按以下顺序确定的:

  1. Content-Type HTTP 头的字符集参数中给出的编码
  2. 文档中 XML 声明的编码属性中给出的编码,
  3. UTF-8.

对于 text/XML、 text/XML-foreign-parsed-tity 或 text/foo + XML 这样的子类型,文档中的 XML 声明的编码属性被忽略,字符编码是:

  1. Content-Type HTTP 头的字符集参数中给出的编码,或者
  2. Us-ascii.

大多数解析器不实现规范; 它们忽略 HTTP 上下文类型,只使用文档中的编码。由于有这么多格式不正确的文件,这种情况短期内不太可能改变。

这里的其他答案解决了 XML 响应的合适 Content-Type是什么的一般问题,并得出结论(与 对于 webservice 响应,text/xml 与 application/xml 之间的区别是什么一样) text/xmlapplication/xml都是允许的。但是,没有解决是否有任何特定于 网站地图的规则。

答案是,没有。站点地图规范是 https://www.sitemaps.org,通过使用 Google site:搜索,您可以确认它不包含任何地方的单词或短语 哑剧演员打字机内容类型Application/xmlText/xml。换句话说,在 Content-Type应该用于服务站点地图这个主题上,它是完全沉默的。

在站点地图规范中没有任何直接针对这个问题的注释,我们可以有把握地假设,当选择任何其他 XML 文档的 Content-Type时,同样的规则也适用——也就是说,它可能是 text/xmlapplication/xml