Получить кросс-домен RSS (xml) через Javascript

Я видел обходные пути прокси-сервера на стороне сервера для извлечения rss (xmls) из кросс-доменов. На самом деле эта question адресует мою проблему, но дает другое решение.

У меня есть ограничение не использовать прокси для извлечения rss-каналов. И, следовательно, решение Google AJAX Feed API также выходит за рамки изображения. Существует ли обходной путь для решения этой проблемы.

JSONP - это решение для запросов, которые отвечают на выход JSON. Но здесь у меня есть RSS-каналы, которые могут отвечать чистым xml.

Как решить проблему.

Ответ 1

Используйте что-то вроде Yahoo! Pipes, чтобы служить вашим прокси-сервером и переводить RSS-XML в ответ JSON.

Вот статья с инструкциями и примерами кода, которые объясняют, как это сделать: Yahoo Pipes - RSS без серверных скриптов.

Ответ 2

Если у вас есть контроль над обоими доменами, вы можете попробовать библиотеку междоменных скриптов, такую ​​как EasyXDM, которая включает кросс-браузер quirks и предоставляет простой в использовании API для связи в клиенте script между различными доменами с использованием наилучшего доступного механизма для этого браузера (например, postMessage если доступно, другие механизмы, если нет).

Предостережение: вам нужно иметь контроль над обоими доменами, чтобы заставить его работать (где "контроль" означает, что вы можете разместить статические файлы на обоих из них). Но вам не нужны изменения кода на стороне сервера.

Еще одна оговорка: здесь есть последствия для безопасности - убедитесь, что вы доверяете другому домену script!

Ответ 3

В настоящее время действительно нет кросс-платформенного решения для межсайтового скриптинга. У вас есть контроль или доступ к RSS-каналам? Если да, почему бы просто не ответить JSON и использовать JSONP?

Есть другие вещи, спускающиеся с щукой с помощью HTML5, такие как межсайтовый обмен сообщениями (называемый междоменными сообщениями), которые могут быть способны передавать полезную нагрузку XML, но в прошлый раз, когда я проверял, у них не было даже полностью определено ограничение размера для обмена сообщениями.

Здесь вы можете увидеть спецификацию: http://dev.w3.org/html5/spec/Overview.html#crossDocumentMessages

Ответ 4

Решение для междоменных вызовов без прокси-сервера на стороне - это использование SWF-компонента. Вы можете script самостоятельно или использовать легкодоступный FLSend

Компонент использует ActionScript URLRequest для вызова удаленных доменов и ExternalInterface для связи с методами JavaScript, которые отображают ваш контент.

Ответ 5

Единственный способ, с помощью которого я могу думать, - вставить подписанный java-апплет на веб-страницу, чтобы извлечь XML-код и использовать javascript для взаимодействия с ним. Я даже не на 100% уверен, что модель безопасности java для этого в настоящее время, но я думаю, что это сработает.