2013-08-26 2 views
-3

Этот код должен извлекать исходный код HTML http://yahoo.com/(index.html) и показывать его в диалоговом окне.Почему это не приведет к исходному коду?

$.ajax({ url: 'http://yahoo.com', success: function(data) { 
    alert(data); 
    } 
}); 

Однако, он не будет делать ничего ...

Что случилось с моим кодом?

+3

Same Origin Policy !!!! –

+1

Поскольку вы не можете совершать вызовы Ajax внешним доменам, если они явно не разрешают ** (google CORS). Большинство «нормальных» веб-сайтов (а не веб-API) этого не делают. –

+0

Попытайтесь найти инструменты разработчика для ошибки вашего браузера. – j08691

ответ

3

По умолчанию вам не разрешено выполнять запросы перекрестных доменов. Это нарушает политику Cross Origin.

Чтобы сделать работу, запрашиваемый домен должен испускать заголовки, которые разрешают запрашивающий домен.

У меня есть учебник о том, как установить и использовать политику CORS: http://fritsvancampen.wordpress.com/2013/02/03/cross-site-origin-requests-aka-cross-origin-resource-sharing/ , но если вы хотите получить данные от Yahoo вы должны контролировать свой домен .. и это не случится;)

+0

Также хороший ресурс (я думаю, мне никогда не приходилось использовать CORS): http://enable-cors.org/. –

+0

Этот ресурс не охватывает нюансы. 'header (« Access-Control-Allow-Origin: * »);' просто ленив и неряшлив. – Halcyon

+0

Спасибо за советы ребятам! Итак, что вы, ребята, думаете, было бы лучше всего получить HTML-код внешнего веб-сайта? Так же, как гуглер Google. Настройка CURL для этого? – cat

1

Ajax не используется для вашей цели. Вы должны использоваться как этот

$content = file_get_contents('http://www.yahoo.com/'); 
    print_r($content); 

Или это может быть полезно для вас http://toolspot.org/extract-website-data.php

Смежные вопросы