Jaki jest prawidłowy typ MIME do użycia w źródle RSS?

137

Czy jeden typ MIME jest lepszy, aby zapewnić zgodność z czytnikami RSS i innymi skrobakami?

Wydaje się, że opcje są następujące:

  • text / xml
  • tekst / rss + xml

Co ciekawe, Stackoverflow używa text / html.

Steve Claridge
źródło

Odpowiedzi:

237

Ani. To http://www.rssboard.org/rss-mime-type-application.txtapplication/rss+xml

vartec
źródło
8
Zgadzam się, że jest to właściwy typ, jednak przeglądarki internetowe nie wydają się być dobrze rozumiane. Wygląda na to, że (niestety) text / xml jest de facto standardem.
Samuel EUSTACHI
1
@SamuelEUSTACHI masz rację, a zaakceptowana odpowiedź prawdopodobnie nie jest najlepsza do zapewnienia zgodności, zgodnie z prośbą. Tim Bray w 2003 roku: „Tak czy inaczej, myślę, że prawdopodobnie ważne jest, aby społeczność zebrała się razem i zdecydowała, jakiego typu mediów użyć i zacząć z niego korzystać”. Dzisiaj: zobacz moją odpowiedź poniżej, aby uzyskać dowody, że prawie wszystkie popularne kanały używają text/xml.
Kai Carver
37

Inni komentatorzy zwrócili uwagę, że jedynym poprawnym typem MIME jest application/rss+xml,.

Jeśli jednak ustawiasz nagłówek accept dla klienta, to

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

może być dobrym wyborem, ponieważ stwierdza, że ​​akceptuje RSS, Atom i XML (w porządku malejącym lub według preferencji).

Robert MacLean
źródło
3
Porządek akceptacji nagłówka informuje serwer, jakiej zawartości użyć. Serwer sprawdzi, czy może zaoferować to pierwsze, potem drugie itd. Dlatego „application / rss + xml” jest najlepszym pierwszym wyborem, a „text / xml” jako ostateczna opcja zastępcza jest dobra.
Robert MacLean,
4
W rzeczywistości kolejność elementów w nagłówku Accept nie ma znaczenia. Preferencja jest wskazana w qparametrze , więc dla uzyskania pożądanego efektu lepiej byłoby wysłać Accept: application/rss+xml, application/rdf+xml, application/atom+xml, application/xml;q=0.9, text/xml;q=0.8, co oznacza „Preferuj dowolny z poprawnych typów MIME dla kanałów. Jeśli nie możesz tego zaoferować, preferuj application/xml. Jeśli nie możesz tego zaoferować, wolisz text/xml. W przeciwnym razie daj mi to, co masz ”
Magnus Hoff
1
Co jest warte, wypróbowałem obie sugerowane formy Acceptnagłówków z przykładami popularnych kanałów w mojej odpowiedzi poniżej i wszystkie wróciły text/xml. Użyłem polecenia: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 Pracowałem nad nowym projektem opartym na ASP.NET Core 3.1 Web API + Angular 9. Potrzebowałem wygenerować kanał RSS i porównując dane wyjściowe z innymi witrynami internetowymi, zdałem sobie sprawę, że prawidłowy typ zawartości do użycia to text / xml. Jednak zawartość HTML w węzłach opisu była zmieniana, ustawienie wartości nagłówka Accept rozwiązało problem. Dziękuję, pozdrawiam 🧐🐉
Nexus
13

Oto pragmatyczna odpowiedź: bez względu na to, jaka jest „poprawna” odpowiedź (i oczywiście toczy się na ten temat debata), text/xmljest typem używanym przez prawie wszystkie popularne kanały na wolności.

Oto kilka, które sprawdziłem:

$ 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

Dzięki temu możesz być pewien, że text/xmlzostanie on poprawnie zinterpretowany przez powszechnie używanych klientów RSS.

Kai Carver
źródło
Nie sprawdzałem pozostałych, ale bbci.co.uk wysyła teraz aplikację / rss + xml
Jules
5

Najbardziej poprawne jestapplication/rss+xml

Najbardziej kompatybilny jestapplication/xml

Według W3C:

Kanały RSS powinny być podawane jako application / rss + xml (RSS 1.0 to format RDF, więc może być zamiast tego podawany jako application / rdf + xml). Kanały Atom powinny używać application / atom + xml. Alternatywnie, w celu zapewnienia zgodności z szeroko rozpowszechnionymi przeglądarkami internetowymi, każdy z tych kanałów może używać jednego z bardziej ogólnych typów XML - najlepiej application / xml.

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

nggit
źródło
2

Wybierz aplikację MIME / rss + xml, aby być bezpiecznym, jeśli chcesz się upewnić, że Twój kanał jest zgodny z czytnikami RSS i innymi skrobakami. Tego właśnie używam.

adyoungsfan
źródło
1

Państwo mogli używać text/xml, ale odpowiedniego typu MIME będzie application/rss+xml.

Cerebrus
źródło
3
application/xmljest preferowany, text/xmlponieważ XML nie jest zgodny z normalnymi regułami kodowania treści tekstowej. Może osadzić swoje kodowanie w swoich danych, co spowoduje problemy, jeśli serwery proxy będą próbować ślepo transkodować tekst. Innymi słowy, serwery proxy mają zachowywać dane bajt po bajcie.
Zenexer
-2

text / xml to jedyna poprawna odpowiedź. Typy MIME to system oparty na rejestracji. Istnieje oficjalna lista zarządzana przez IANA (Internet Assigned Numbers Authority) pod adresem http://www.iana.org/ assignments/media-types/media-types.xhtml

Monkey Code
źródło
1
Nie wszystkie typy MIME na świecie są zarejestrowane w IANA. Co ważniejsze, nic w tym dokumencie nie sugeruje użycia dla RSS.
Ruben Verborgh
RSS to XML. Sugeruje użycie dla XML.
Monkey Code
2
Ten argument jest niewystarczający. RSS to także RDF. XML to także tekst. Z tego powodu typ RDF lub tekstowy MIME również może być dobry. Jednak problem polega na tym, że nie wszystkie dokumenty XML są w formacie RSS. Tak więc ogólny typ XML nie jest wystarczająco specyficzny, aby jednoznacznie zidentyfikować RSS.
Ruben Verborgh
@RubenVerborgh "nic w tym dokumencie nie sugeruje użycia dla RSS" Użyłem Ctrl + F i wpisałem application / atom i znalazłem application / atom + xml jako jeden z typów MIME. Nie wiem o innych przestrzeniach nazw. Jednak myślę, że application / rss + xml jest najlepsza dla 2.0, bez względu na to, jaka jest przestrzeń nazw.
MaxxiBoi