JavaScript: как получить содержимое веб-страницы - PullRequest
7 голосов
/ 14 марта 2011

В JS возможно ли получить содержимое веб-страницы, назначив его переменной?Например, почему следующий игрушечный код не работает?

var req = new XMLHttpRequest();
req.open('GET', 'http://www.google.com', false);
req.send(null);
if(req.status == 200)
  alert(req.responseText);

Есть ли лучший метод / код?

Ответы [ 4 ]

7 голосов
/ 14 марта 2011

используйте серверный прокси, такой как php-страница, который читает нужную страницу, а затем делает ajax-вызовы этого прокси через javascript:

var req = new XMLHttpRequest();

req.open('GET', 'proxy.php?url=http://www.google.com', false);
req.send(null);

if(req.status == 200) {
   alert(req.responseText);
}
6 голосов
/ 14 марта 2011

Вышеуказанное не работает, поскольку запросы Ajax не могут получить доступ к файлам / страницам в других доменах из-за проблем безопасности. Как правило, вы можете создать скрипт, используя [Вставить серверный язык здесь], чтобы загрузить запрашиваемую страницу. Тогда ваш javascript может сделать запрос на этой странице.

Существует также «JSONP», но обычно он используется на сайтах, которые предоставляют определенный доступ к JSONP, чего нет у большинства случайных URL.

4 голосов
/ 14 марта 2011

В целях безопасности нельзя использовать AJAX для отправки запроса в другой домен.

2 голосов
/ 14 марта 2011

Если вам действительно нужно это сделать, вы можете попробовать использовать jQuery и iFrames (подробнее на (подробнее http://softwareas.com/cross-domain-communication-with-iframes).

). Также вы можете попробовать с Access-Control-Allow-Origin: http://yourdomain:1234/ в заголовках, Google для перекрестного общего доступа к ресурсам. Это относительно новый, хотя, не все браузеры знают об этом. Это также зависит, если у вас есть контроль над генерацией заголовков других серверов и немного других вещей.

...