Was ist der richtige MIME-Typ für einen RSS-Feed?

134

Ist ein MIME-Typ vorzuziehen, um die Kompatibilität mit RSS-Readern und anderen Scrapern sicherzustellen?

Die Optionen scheinen zu sein:

  • text / xml
  • text / rss + xml

Interessanterweise verwendet Stackoverflow Text / HTML.

Steve Claridge
quelle

Antworten:

233

Weder. Es ist http://www.rssboard.org/rss-mime-type-application.txtapplication/rss+xml

vartec
quelle
8
Ich bin damit einverstanden, dass dies der richtige Typ ist, er scheint jedoch von Webbrowsern nicht gut verstanden zu werden. Es sieht so aus, als ob (leider) Text / XML jetzt ein De-facto-Standard ist.
Samuel EUSTACHI
1
@SamuelEUSTACHI Sie haben Recht, und die akzeptierte Antwort ist wahrscheinlich nicht die beste, um die angeforderte Kompatibilität sicherzustellen. Tim Bray aus dem Jahr 2003: "Auf die eine oder andere Weise denke ich, dass es wahrscheinlich wichtig ist, dass die Community sich zusammenschließt und entscheidet, welchen Medientyp sie verwendet und anfängt, ihn zu verwenden." Heute: Siehe meine Antwort unten für Beweise, dass so ziemlich alle gängigen Feeds verwenden text/xml.
Kai Carver
35

Andere Kommentatoren haben darauf hingewiesen, dass der einzige richtige MIME-Typ ist application/rss+xml,.

Wenn Sie jedoch einen Akzeptanzheader für einen Client festlegen, dann

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

Dies ist möglicherweise eine gute Wahl, da RSS, Atom und XML (in absteigender Reihenfolge oder Präferenz) akzeptiert werden.

Robert MacLean
quelle
3
Die Reihenfolge "Header akzeptieren" teilt dem Server mit, welcher Inhalt verwendet werden soll. Der Server wird sehen, ob er das erste, dann das zweite usw. anbieten kann. Deshalb ist "application / rss + xml" die beste erste Wahl und "text / xml" als letzter Fallback ist gut.
Robert MacLean
4
Tatsächlich ist die Reihenfolge der Elemente im Accept-Header irrelevant. Die Präferenz wird mit dem qParameter angegeben . Für den gewünschten Effekt ist es daher besser zu senden Accept: application/rss+xml, application/rdf+xml, application/atom+xml, application/xml;q=0.9, text/xml;q=0.8. Dies bedeutet: "Bevorzugen Sie einen der richtigen MIME-Typen für Feeds. Wenn Sie das nicht anbieten können, bevorzugen Sie application/xml. Wenn Sie das nicht anbieten können, lieber text/xml. Ansonsten gib mir einfach was du hast "
Magnus Hoff
1
Für das, was es wert ist, habe ich beide vorgeschlagenen Formen von ausprobiert Accept Headern mit den Beispielen für beliebte Feeds in meiner Antwort unten , und alle sind zurückgekehrt text/xml. Ich benutzte den Befehl: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
Kai Carver
@KaiCarver Ich habe an einem neuen Projekt gearbeitet, das mit ASP.NET Core 3.1 Web API + Angular 9 erstellt wurde. Ich musste einen RSS-Feed generieren und beim Vergleich der Ausgabe mit anderen Websites wurde mir klar, dass der richtige Inhaltstyp zu verwenden ist text / xml. Der HTML-Inhalt in den Beschreibungsknoten wurde jedoch maskiert. Durch Festlegen der Accept-Header-Werte wurde das Problem behoben. Vielen Dank, Prost 🧐🐉
Nexus
14

Hier ist eine pragmatische Antwort: Was auch immer die "richtige" Antwort sein mag (und es gibt eindeutig Debatten darüber), text/xmlist der Typ, der von so ziemlich allen populären Feeds in freier Wildbahn verwendet wird.

Hier sind einige, die ich überprüft habe:

$ 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

So können Sie sicher sein, dass text/xmldies von häufig verwendeten RSS-Clients korrekt interpretiert wird.

Kai Carver
quelle
Habe die anderen nicht überprüft, aber bbci.co.uk sendet jetzt Anwendung / rss + xml
Jules
5

Das richtigste istapplication/rss+xml

Am kompatibelsten istapplication/xml

Laut W3C:

RSS-Feeds sollten als application / rss + xml bereitgestellt werden (RSS 1.0 ist ein RDF-Format, daher kann es stattdessen als application / rdf + xml bereitgestellt werden). Atom-Feeds sollten application / atom + xml verwenden. Aus Gründen der Kompatibilität mit weit verbreiteten Webbrowsern kann jeder dieser Feeds alternativ einen der allgemeineren XML-Typen verwenden - vorzugsweise application / xml.

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

nggit
quelle
1

Sie könnten verwenden text/xml, aber der richtige MIME-Typ wäre application/rss+xml.

Cerebrus
quelle
3
application/xmlwird bevorzugt, text/xmlda XML nicht den normalen Regeln für die Codierung von Textinhalten folgt. Es kann seine Codierung in seine Daten einbetten, was zu Problemen führen kann, wenn Proxys versuchen, den Text blind zu transkodieren. Mit anderen Worten, Proxys werden angewiesen, die Daten Byte für Byte beizubehalten.
Zenexer
-2

text / xml ist die einzig richtige Antwort. MIME-Typen sind ein registrierungsbasiertes System. Unter http://www.iana.org/assignments/media-types/media-types.xhtml gibt es eine offizielle Liste, die von der IANA (Internet Assigned Numbers Authority) verwaltet wird

Affencode
quelle
1
Nicht alle MIME-Typen weltweit sind bei IANA registriert. Noch wichtiger ist, dass nichts in diesem Dokument die Verwendung für RSS nahe legt.
Ruben Verborgh
RSS ist XML. Es wird die Verwendung für XML vorgeschlagen.
Monkey Code
2
Dieses Argument ist unzureichend. RSS ist auch RDF. XML ist auch Text. Nach dieser Überlegung könnte ein RDF- oder Text-MIME-Typ auch gut sein. Das Problem ist jedoch, dass nicht alle XML-Dokumente RSS sind. Ein generischer XML-Typ ist also nicht spezifisch genug, um RSS eindeutig zu identifizieren.
Ruben Verborgh
@RubenVerborgh "Nichts in diesem Dokument deutet auf eine Verwendung für RSS hin" Ich habe Strg + F verwendet und application / atom eingegeben und application / atom + xml als einen der MIME-Typen gefunden. Ich weiß nichts über andere Namespaces. Ich denke jedoch, dass application / rss + xml das Beste für 2.0 ist, unabhängig vom Namespace.
MaxxiBoi