Может ли JavaScript загружать данные XML из стороннего домена? - PullRequest
5 голосов
/ 19 марта 2009

Может ли JavaScript загрузить канал RSS XML с Yahoo ?

Разрешено ли клиентскому JS получать доступ к сторонним доменам?

Ответы [ 5 ]

2 голосов
/ 19 февраля 2011

Вы можете использовать Google Feed API для загрузки RSS в JavaScript с любого домена / сервера. Это больше, чем просто прокси, он на самом деле обслуживает RSS-контент из кеша Google, а не попадает на исходный сервер. Это может быть спасением для небольших серверов, которые не могут справиться с скачками трафика Slashdot.

Я использовал Feed API для межсайтового доступа к RSS в статье о Silverlight несколько лет назад.

2 голосов
/ 08 мая 2009

Вы можете использовать методику, изложенную в моем сообщении в блоге Неписаное руководство по Yahoo Query Langauge

Вы бы запросили таблицу данных XML с помощью yql-статистики следующим образом: select * from xml where url="http://path/to/xml Затем вы добавили бы тег script в ваш html (это можно сделать с помощью document.createElement ('script')) с помощью src http://query.yahooapis.com/v1/public/yql?q={your yql здесь} & format = json & callback = {ваша функция здесь}, где {ваш yql здесь} заменяет с URI Закодированной версией вас yql statment.

2 голосов
/ 19 марта 2009

Простой способ сделать это - прокси-запрос через сервер, на котором находится ваша страница. Шаги:

  1. Запись сценария на стороне сервера выполняет запрос http в ленте rss, когда сам этот сценарий является запросом (т.е. через get или post)
  2. Используйте ajax для запроса сценария на стороне сервера или просто вызовите его из основного сценария для этой страницы.
  3. Сценарий на стороне сервера затем возвращает источник канала в некоторой отображаемой форме.
  4. Profit!

В IE 8 и FF 3.1 (не определено) эти запросы можно выполнять через специализированные межсайтовые вызовы, но браузеры последнего поколения будут вызывать проблемы. См:

http://dannythorpe.com/2009/01/15/ie8-cross-domain-request-support-demo/ http://ejohn.org/blog/cross-site-xmlhttprequest/ Функция ограничена в FF 3.0, неясно, вернется ли она в 3.1

Однако указанные выше действия гарантированно не нарушат безопасность CSS любого браузера за счет некоторой задержки и дополнительной нагрузки на ваш сервер.

0 голосов
/ 08 мая 2009

Не напрямую. Вы можете использовать предложение Даны о прокси-запросе или посмотреть на метод, называемый JSONP, который, по сути, оборачивает возвращенный объект JSON в пользовательскую функцию обратного вызова, запрошенную тегом script, который вы вставляете в DOM. Большинство провайдеров API поддерживают это (включая API-интерфейсы Yahoo).

0 голосов
/ 19 марта 2009

Я не уверен насчет JS, но знаю, что вы можете использовать один из API Google , и у них есть программа для чтения RSS. Я знаю, что это, вероятно, не то, что вы хотите, но если вы прочитаете документацию, вы сможете получить ответ о том, как это работает.

...