【发布时间】:2010-10-10 09:14:09
【问题描述】:
为了确保与 RSS 阅读器和其他抓取工具的兼容性,最好使用一种 MIME 类型吗?
选项似乎是:
- 文本/xml
- 文本/rss+xml
有趣的是,Stackoverflow 使用的是 text/html。
【问题讨论】:
标签: rss mime-types
为了确保与 RSS 阅读器和其他抓取工具的兼容性,最好使用一种 MIME 类型吗?
选项似乎是:
有趣的是,Stackoverflow 使用的是 text/html。
【问题讨论】:
标签: rss mime-types
两者都不是。我是 application/rss+xml
http://www.rssboard.org/rss-mime-type-application.txt
【讨论】:
text/xml。
你可以使用text/xml,但正确的MIME类型应该是application/rss+xml。
【讨论】:
application/xml 优于 text/xml,因为 XML 不遵循正常的文本内容编码规则。它可以将其编码嵌入其数据中,如果代理尝试盲目地对文本进行转码,这将导致问题。换句话说,代理被指示逐字节保存数据。
如果您想确保您的提要与 RSS 阅读器和其他抓取工具兼容,请选择 MIME application/rss+xml 以确保安全。这就是我使用的。
【讨论】:
其他评论者指出,唯一正确的 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(按降序或优先顺序)。
【讨论】:
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
text/xml 是唯一正确的答案。 Mime 类型是基于注册的系统。有一个由 IANA(互联网号码分配机构)管理的官方列表,地址为http://www.iana.org/assignments/media-types/media-types.xhtml
【讨论】:
这是一个务实的答案:无论“正确”答案是什么(显然对此存在争议),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 客户端正确解释。
【讨论】:
最正确的是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没有意义。