用于 RSS 提要的正确 MIME 类型是啥?
Posted
技术标签:
【中文标题】用于 RSS 提要的正确 MIME 类型是啥?【英文标题】: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有趣的是,*** 使用的是 text/html。
【问题讨论】:
【参考方案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 theq
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 对某种情况的看法,即使它不一定是完美的建议(如果存在这样的事情)。以上是关于用于 RSS 提要的正确 MIME 类型是啥?的主要内容,如果未能解决你的问题,请参考以下文章