Який правильний тип MIME використовувати для RSS-каналу?


135

Чи бажаний один тип MIME для забезпечення сумісності з RSS-зчитувачами та іншими скреперами?

Здається, такі варіанти:

  • текст / xml
  • текст / rss + xml

Цікаво, що Stackoverflow використовує текст / html.

Відповіді:


234

8
Я погоджуюся, що це правильний тип, проте веб-браузери, здається, не дуже добре зрозуміли. Схоже, що (на жаль) текст / xml зараз фактично є стандартом.
Самуель EUSTACHI

1
@SamuelEUSTACHI ви праві, і прийнята відповідь, мабуть, не найкраща для забезпечення сумісності, як вимагається. Тім Брей ще в 2003 році: "Так чи інакше, я думаю, що це, мабуть, важливо, щоб громада зібралася і вирішила, який тип медіа-типу використовувати та почати використовувати". Сьогодні: див. Мою відповідь нижче для підтвердження того, що майже всі популярні канали використовують text/xml.
Кай Карвер

35

Інші коментатори зазначили, що єдиний правильний тип міми є 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 (у порядку зменшення або вподобання).


3
Порядок прийняття заголовка повідомляє серверу, який вміст використовувати. Сервер побачить, чи може він запропонувати, що перший, потім другий і т. Д. ... Ось чому "application / rss + xml" є найкращим першим вибором, а "text / xml" як остаточний запас - хорошим.
Роберт Маклін

4
Насправді порядок елементів у заголовку Accept не має значення. Налаштування вказується 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. Інакше просто дайте мені те, що у вас є "
Магнус Хофф

1
Що варто, я спробував обидві запропоновані форми 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
Кай Карвер

@KaiCarver Я працював над новим проектом, побудованим за допомогою ASP.NET Core 3.1 Web API + Angular 9. Мені потрібно було генерувати RSS-канал і, порівнюючи вихідні дані на інші веб-сайти, я зрозумів, що правильний тип вмісту використовується текст / xml Однак вміст HTML у вузлах опису усувався, встановлення значень заголовка Accept вирішило проблему. Дякую, ура! 🧐🐉
Nexus

14

Ось прагматична відповідь: якою б не була "правильна" відповідь (і, очевидно, є дискусії з цього приводу), 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-клієнтами.


Не перевіряв інших, але bbci.co.uk тепер надсилає заявку / rss + xml
Jules

5

Найбільш коректні є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


2

Перейдіть на додаток MIME / rss + xml, щоб бути безпечним, якщо ви хочете переконатися, що ваш канал сумісний з RSS-зчитувачами та іншими скребками. Саме цим я і користуюся.


1

Ви можете використовувати text/xml, але правильний тип MIME був би application/rss+xml.


3
application/xmlперевага віддається text/xmlтому, що XML не дотримується нормальних правил кодування текстового вмісту. Він може вбудувати кодування у свої дані, що спричинить проблеми, якщо проксі-сервери намагаються сліпо перекодувати текст. Іншими словами, проксі-сервери доручають зберігати дані в байті.
Zenexer

-2

text / xml - єдина правильна відповідь. Типи mime - це система, заснована на реєстрації. Є офіційний список, керований IANA (Internet Assigned Numbers Authority) за адресою http://www.iana.org/assignments/media-types/media-types.xhtml


1
Не всі типи MIME у світі зареєстровані в IANA. Що ще важливіше, ніщо в цьому документі не пропонує використання RSS.
Рубен Верборг

RSS - це XML. Він пропонує використання для XML.
Код мавпи

2
Цей аргумент недостатній. RSS - це також RDF. XML - це також текст. Таким чином, міркуючи, RDF або текст MIME типу також може бути корисним. Однак проблема полягає в тому, що не всі документи XML є RSS. Отже, загальний тип XML недостатньо специфічний, щоб однозначно ідентифікувати RSS.
Рубен Верборг

@RubenVerborgh "нічого в цьому документі не передбачає використання для RSS" Я використав Ctrl + F, і я набрав додаток / atom, і він знайшов application / atom + xml як один із типів MIME. Я не знаю про інші простори імен. Однак я вважаю, що application / rss + xml є найкращим для 2.0, незалежно від того, який саме простір імен.
MaxxiBoi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.