Какой тип MIME следует использовать для RSS-канала?


135

Является ли один тип MIME предпочтительным для обеспечения совместимости с программами чтения RSS и другими средствами очистки?

Варианты кажутся такими:

  • текст / XML
  • текст / Новости + XML

Интересно, что Stackoverflow использует text / html.

Ответы:


235

8
Я согласен с тем, что это правильный тип, однако он не совсем понятен веб-браузерам. Похоже (к сожалению) text / xml стал стандартом де-факто.
Samuel 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
Порядок заголовков accept сообщает серверу, какой контент использовать. Сервер посмотрит, сможет ли он предложить то первое, потом второе и т. Д. Вот почему "application / rss + xml" - лучший первый выбор, а "text / xml" как последний вариант - хороший вариант.
Robert MacLean

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 Я работал над новым проектом, созданным с использованием веб-API ASP.NET Core 3.1 + Angular 9. Мне нужно было создать RSS-канал, и при сравнении вывода с другими веб-сайтами я понял, что правильный Content-Type для использования - текст / 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
Жюль

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.
Monkey Code

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

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