【问题标题】:What is the correct MIME type to use for an RSS feed?用于 RSS 提要的正确 MIME 类型是什么?
【发布时间】:2010-10-10 09:14:09
【问题描述】:

为了确保与 RSS 阅读器和其他抓取工具的兼容性,最好使用一种 MIME 类型吗?

选项似乎是:

  • 文本/xml
  • 文本/rss+xml

有趣的是,Stackoverflow 使用的是 text/html。

【问题讨论】:

    标签: rss mime-types


    【解决方案1】:

    两者都不是。我是 application/rss+xml http://www.rssboard.org/rss-mime-type-application.txt

    【讨论】:

    • 我同意这是正确的类型,但是,Web 浏览器似乎并不能很好地理解它。看起来(可悲的)text/xml 现在是事实上的标准。
    • @SamuelEUSTACHI 你是对的,并且按照要求,接受的答案可能不是确保兼容性的最佳选择。蒂姆·布雷(Tim Bray)早在 2003 年:“我认为以某种方式,社区齐心协力并决定使用哪种媒体类型并开始使用它可能很重要”。今天:请参阅下面的答案,以证明几乎所有流行的提要都使用text/xml
    【解决方案2】:

    可以使用text/xml,但正确的MIME类型应该是application/rss+xml

    【讨论】:

    • application/xml 优于 text/xml,因为 XML 不遵循正常的文本内容编码规则。它可以将其编码嵌入其数据中,如果代理尝试盲目地对文本进行转码,这将导致问题。换句话说,代理被指示逐字节保存数据。
    【解决方案3】:

    如果您想确保您的提要与 RSS 阅读器和其他抓取工具兼容,请选择 MIME application/rss+xml 以确保安全。这就是我使用的。

    【讨论】:

      【解决方案4】:

      其他评论者指出,唯一正确的 mime 类型是 application/rss+xml,

      但是,如果您要为客户端设置接受标头,那么

      Accept: application/rss+xml, application/rdf+xml;q=0.8, application/atom+xml;q=0.6, application/xml;q=0.4, text/xml;q=0.4

      可能是一个不错的选择,因为它声明它接受 RSS、Atom 和 XML(按降序或优先顺序)。

      【讨论】:

      • accept header order 告诉服务器使用什么内容。服务器将查看它是否可以提供第一个,然后是第二个等等......这就是为什么“application/rss+xml”是最好的首选,而“text/xml”作为最终的后备是好的。跨度>
      • 其实Accept头中元素的顺序是无关紧要的。 Preference is indicated with the q parameter,所以为了获得想要的效果,最好发送Accept: application/rss+xml, application/rdf+xml, application/atom+xml, application/xml;q=0.9, text/xml;q=0.8,这意味着“首选任何正确的 MIME 类型的提要。如果你不能提供,首选application/xml。如果你不能提供,更喜欢text/xml。否则,就给我你所拥有的”
      • 对于它的价值,我尝试了Accept 标头的两种建议形式以及下面我的答案中的流行提要示例,它们都返回了text/xml。我使用了命令:curl -s -H 'Accept: application/rss+xml, application/rdf+xml, application/atom+xml, application/xml;q=0.9, text/xml;q=0.8' -H 'Content-Type: application/rss+xml' -I $f
      • @KaiCarver 我一直在开发一个使用 ASP.NET Core 3.1 Web API + Angular 9 构建的新项目。我需要生成一个 RSS 提要,并且在将输出与其他网站进行比较时,我意识到要使用的正确 Content-Type 是 text/xml。然而,描述节点中的 HTML 内容被转义,设置 Accept 标头值解决了该问题。谢谢你,干杯??
      【解决方案5】:

      text/xml 是唯一正确的答案。 Mime 类型是基于注册的系统。有一个由 IANA(互联网号码分配机构)管理的官方列表,地址为http://www.iana.org/assignments/media-types/media-types.xhtml

      【讨论】:

      • 并非世界上所有的 MIME 类型都在 IANA 注册。更重要的是,该文档中没有任何内容建议使用 RSS。
      • RSS 是 XML。它建议使用 XML。
      • 这个论点是不充分的。 RSS 也是 RDF。 XML 也是文本。所以根据这个推理,RDF 或文本 MIME 类型也可能是好的。但是,问题在于并非所有 XML 文档都是 RSS。因此,通用 XML 类型不足以明确识别 RSS。
      • @RubenVerborgh “该文档中没有任何内容建议使用 RSS” 我使用 Ctrl + F 并输入 application/atom,它发现 application/atom+xml 作为 MIME 类型之一。我不知道其他命名空间。但是,我认为 application/rss+xml 是 2.0 的最佳选择,无论命名空间是什么。
      【解决方案6】:

      这是一个务实的答案:无论“正确”答案是什么(显然对此存在争议),text/xml 几乎是所有中流行的提要所使用的类型荒野。

      以下是我检查过的一些:

      $ for f in \
        https://feeds.feedburner.com/TechCrunch/ \
        http://feeds.bbci.co.uk/news/video_and_audio/news_front_page/rss.xml \
        http://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml \
        https://daringfireball.net/thetalkshow/rss \
        http://www.npr.org/rss/podcast.php?id=381444908 \
        http://feeds.serialpodcast.org/serialpodcast \
        http://podcasts.joerogan.net/feed \
        https://feeds.feedburner.com/thetimferrissshow \
        http://feed.thisamericanlife.org/talpodcast ; do \
        curl -s -I $f | fgrep -i Content-Type: ; done
      content-type:text/xml; charset=UTF-8
      Content-Type: text/xml
      Content-Type: text/xml
      Content-Type: text/xml;charset=UTF-8
      Content-Type: text/xml;charset=UTF-8
      Content-Type: text/xml; charset=UTF-8
      Content-Type: text/xml; charset=UTF-8
      content-type:text/xml; charset=UTF-8
      Content-Type: text/xml; charset=UTF-8
      

      因此您可以确定text/xml 将被常用的 RSS 客户端正确解释。

      【讨论】:

      • 其他的还没有检查,但是 bbci.co.uk 现在正在发送 application/rss+xml
      【解决方案7】:

      正确的是application/rss+xml

      兼容的是application/xml

      根据 W3C:

      RSS 提要应以 application/rss+xml 的形式提供(RSS 1.0 是一个 RDF 格式,所以它可以作为 application/rdf+xml 代替)。原子 提要应使用 application/atom+xml。或者,对于 与广泛部署的网络浏览器兼容,这些提要中的任何一个 可以使用一种更通用的 XML 类型——最好是 应用程序/xml。

      https://validator.w3.org/feed/docs/warning/UnexpectedContentType.html

      【讨论】:

      • 我不认为application/rss+xml有任何实际的兼容性问题,所以使用xml mimetype没有意义。
      • @MikkoOhtamaa 旧浏览器可能无法正确呈现,因为它们无法识别 mime。使用 application/xml 几乎所有浏览器都会显示一个 xml 文档树而不是纯文本/html
      • 但是您首先不是使用浏览器来呈现 RSS,而是使用 RSS 阅读器。
      • 赞成,总是很高兴看到 W3C 对某种情况的看法,即使它不一定是完美的建议(如果存在这样的事情)。
      猜你喜欢
      • 2011-01-03
      • 2017-12-19
      • 2013-01-22
      • 2011-04-13
      • 2011-05-11
      • 2012-02-06
      相关资源
      最近更新 更多