Чи бажаний один тип MIME для забезпечення сумісності з RSS-зчитувачами та іншими скреперами?
Здається, такі варіанти:
- текст / xml
- текст / rss + xml
Цікаво, що Stackoverflow використовує текст / html.
Чи бажаний один тип MIME для забезпечення сумісності з RSS-зчитувачами та іншими скреперами?
Здається, такі варіанти:
Цікаво, що Stackoverflow використовує текст / html.
Відповіді:
Ні. Це http://www.rssboard.org/rss-mime-type-application.txtapplication/rss+xml
text/xml
.
Інші коментатори зазначили, що єдиний правильний тип міми є 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
параметром , тому для бажаного ефекту було б краще надіслати 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
це тип, який використовується майже всіма популярними каналами в дикій природі.
Ось декілька, які я перевірив:
$ 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). Для каналів Atom слід використовувати application / atom + xml. Крім того, для сумісності з широко розгорнутими веб-браузерами будь-який із цих каналів може використовувати один із загальноприйнятих типів XML - бажано application / xml.
https://validator.w3.org/feed/docs/warning/UnexpectedContentType.html
Перейдіть на додаток MIME / rss + xml, щоб бути безпечним, якщо ви хочете переконатися, що ваш канал сумісний з RSS-зчитувачами та іншими скребками. Саме цим я і користуюся.
Ви можете використовувати text/xml
, але правильний тип MIME був би application/rss+xml
.
application/xml
перевага віддається text/xml
тому, що XML не дотримується нормальних правил кодування текстового вмісту. Він може вбудувати кодування у свої дані, що спричинить проблеми, якщо проксі-сервери намагаються сліпо перекодувати текст. Іншими словами, проксі-сервери доручають зберігати дані в байті.
text / xml - єдина правильна відповідь. Типи mime - це система, заснована на реєстрації. Є офіційний список, керований IANA (Internet Assigned Numbers Authority) за адресою http://www.iana.org/assignments/media-types/media-types.xhtml