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.
Czy jeden typ MIME jest lepszy, aby zapewnić zgodność z czytnikami RSS i innymi skrobakami?
Wydaje się, że opcje są następujące:
Co ciekawe, Stackoverflow używa text / html.
Odpowiedzi:
Ani. To http://www.rssboard.org/rss-mime-type-application.txtapplication/rss+xml
text/xml
.
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).
q
parametrze , 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 ”
Accept
nagłó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
Oto pragmatyczna odpowiedź: bez względu na to, jaka jest „poprawna” odpowiedź (i oczywiście toczy się na ten temat debata), text/xml
jest 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/xml
zostanie on poprawnie zinterpretowany przez powszechnie używanych klientów RSS.
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
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.
Państwo mogli używać text/xml
, ale odpowiedniego typu MIME będzie application/rss+xml
.
application/xml
jest preferowany, text/xml
ponieważ 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.
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