Можно ли использовать Javascript для получения данных с других сайтов? - PullRequest
2 голосов
/ 13 апреля 2010

Возможно ли для веб-страницы, использующей Javascript, получить данные с другого сайта? В моем случае я хочу получить его для расчетов и построения графика. Но я не уверен, возможно ли это из-за проблем безопасности. Если это считается нет, но есть обходной путь, я был бы признателен, если бы мне сказали обходной путь. Я не хочу собирать эту информацию на стороне сервера, если это возможно.

Любая помощь приветствуется.

Ответы [ 5 ]

2 голосов
/ 13 апреля 2010

Узнайте о формате JSONP и межсайтовых запросах (http://en.wikipedia.org/wiki/JSON#JSONP).

Возможно, вам потребуется использовать скрипт PHP-proxy на вашей стороне сервера, который будет получать информацию с веб-сайтов и предоставлять ее вашему Javascript.

1 голос
/ 13 апреля 2010

Единственный надежный способ - позволить «вашему» веб-серверу действовать как прокси . В PHP вы можете использовать curl() для отправки HTTP-запроса на внешний сайт, а затем просто повторить ответ.

0 голосов
/ 13 апреля 2010

Также стоит рассмотреть поддержку XMLHttpRequest Access Control , которая поддерживается в некоторых современных браузерах.

Если поставщик услуг, к которому вы пытаетесь получить доступ через веб-страницу, имеет такую ​​настройку, это очень простой вызов XMLHttpRequest, и вы получите доступ к ресурсам на этом сайте без необходимости в JSONP (особенно полезно для запросы, которые не являются GET, т.е. POST, HEAD и т. д.)

0 голосов
/ 13 апреля 2010

междоменный javascript раньше был невозможен, использование (php-) прокси было обходным путем.

jsonp полностью меняет это, он позволяет запрашивать javascript с другого сервера (если у него есть API, поддерживающий jsonp, у многих крупных веб-игроков, таких как google, twitter, yahoo, ... do), указывая функцию обратного вызова в вашем коде, который должен быть активирован для ответа на ответ.

ответ в javascript будет содержать:

  • вызов функции обратного вызова, которую вы определили
  • фактическая полезная нагрузка в виде javascript-объекта.

фреймворки, такие как jquery, предлагают простую поддержку jsonp из коробки .

когда у вас есть необработанные данные, которые можно связать с инструментами Google для работы с диаграммами , чтобы создавать графики на лету и вставлять их в свое веб-приложение.

0 голосов
/ 13 апреля 2010

Вы не можете получить данные с другого сервера из-за той же политики происхождения . Вы можете сделать некоторые трюки, чтобы обойти это, например, поместить URL в тег <script>, но в на случай, если это не сработает просто для разбора HTML.

Используйте simple_dom_html , чтобы проанализировать вашу сторону сервера данных. в любом случае это намного проще, чем делать это в JavaScript.

Простой способ сделать это - использовать встроенный iframe . Если веб-страница, с которой вы получаете данные, не имеет заголовков или вы можете изолировать извлекаемые данные (например, изображение или SWF), это может сработать.

...