Может ли JavaScript загружать XML-данные из стороннего домена?

StackOverflow https://stackoverflow.com/questions/660774

  •  20-08-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

Вы бы запросили таблицу XML-данных с помощью yql statment следующим образом:

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

Другие советы

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

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

В 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 браузера за счет некоторого запаздывания и дополнительной нагрузки hw на ваш сервер.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top