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

我应该为我的XML站点地图发送什么内容类型值?,xml,mime-types,sitemap,xml-sitemap,Xml,Mime Types,Sitemap,Xml Sitemap,我想我应该发送“text/xml”,但后来我读到我应该发送“application/xml”。这有关系吗?有人能解释其中的区别吗?

我想我应该发送“text/xml”,但后来我读到我应该发送“application/xml”。这有关系吗?有人能解释其中的区别吗?

每个XML实体都适合与应用程序/XML介质一起使用 未经修改的类型。但这并没有利用以下事实: 在许多情况下,XML可以被视为纯文本。MIME用户代理 (和web用户代理)不明确支持 例如,application/xml将其视为application/octet流 例如,通过提供将其保存到文件

指示XML实体应被视为纯文本 默认情况下,使用text/xml媒体类型。这限制了编码 在XML实体中使用与 [RFC-2045]中所述的文本媒体类型要求,以及 [RFC-2046],例如UTF-8,但不是UTF-16(HTTP除外)

-两者都很好

text/xxx意味着如果程序不理解xxx,则将文件以纯文本形式显示给用户是有意义的。应用程序/xxx意味着显示它是没有意义的

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

如果省略charset参数,则为默认字符编码:

当字符集 参数未显式指定。如果默认字符集(即。, 文本/xml的US-ASCII)由于某些原因(例如,糟糕的web应用程序)不方便 服务器),应用程序/xml提供了另一种选择(请参见“可选 第3.2节中应用程序/xml注册的参数)

用于:

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

用于:

如果在字符集所在的位置接收到应用程序/xml实体 参数,没有提供有关 MIME内容类型头的字符集。一致性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)。

根据经验,要使您的文档被所有web服务器、代理和客户端浏览器正确处理,最安全的方法可能是:

  • 使用application/xml内容类型
  • 在内容类型中包括字符编码,可能是UTF-8
  • 在XML文档本身的编码属性中包含匹配的字符编码
  • 就某些浏览器无法正确实现的规范而言,内容类型的主要区别在于客户端应该如何处理字符编码,如下所示:

    对于application/xml、application/xml dtd、application/xml外部解析实体或application/xml的任何一个子类型,如application/atom+xml、application/rss+xml或application/rdf+xml,字符编码按以下顺序确定:

  • 内容类型HTTP头的charset参数中给定的编码
  • 文档中XML声明的编码属性中给出的编码
  • utf-8
  • 对于text/xml、text/xml外部解析实体或text/foo+xml等子类型,忽略文档中xml声明的编码属性,字符编码为:

  • 内容类型HTTP头的charset参数中给定的编码,或
  • 美国ascii码

  • 大多数解析器不实现规范;它们忽略HTTP上下文类型,只在文档中使用编码。有这么多格式不正确的文档,这不太可能很快改变。

    这里的其他答案解决了XML响应的适当
    内容类型是什么的一般问题,并得出结论(与之一样)
    text/XML
    应用程序/XML
    都是允许的。但是,没有解决是否有任何特定于站点地图的规则

    回答:没有。sitemap规范是,使用Google
    site:
    搜索,您可以确认它不包含单词或短语mime、mimetype、内容类型、应用程序/xml或文本/xml。换言之,它完全没有提到为站点地图提供服务应该使用什么
    内容类型

    在sitemap规范中没有直接解决这个问题的任何注释的情况下,我们可以安全地假设,当选择任何其他XML文档的
    内容类型时,应用相同的规则-即,它可以是
    text/XML
    application/XML

    ,仍然很有趣