Pour un projet, j'ai besoin d'obtenir le code source de la page Web de différents autres domaines.
J'ai essayé le code suivant: toujours je ne reçois aucun résultat mais juste une boîte d'alerte vierge. P> p>
6 Réponses :
Pour des raisons de sécurité Les scripts ne sont pas en mesure d'accéder au contenu d'autres domaines. Mozilla a un long article sur Contrôle d'accès HTTP , mais la ligne finale est que sans le site Web ajout. Prise en charge des demandes croisées, vous êtes vissé. P>
Par défaut, tous les navigateurs restreignent les demandes inter-domaines, vous pouvez en contourner YQL comme proxy. Voir un guide ici: http: // ajaxian. Com / Archives / Utilisation-YQL-AS-A-A-A-Proxy-for-Domain-Ajax P>
James Padolsey possède également un petit JQUERY Plugin qui utilise YQL, si cela facilitera les choses: )
Ce code fonctionne parfaitement à l'aide de JQuery et YQL
$(document).ready(function(){ var container = $('#target'); $('.ajaxtrigger').click(function(){ doAjax($(this).attr('href')); return false; }); function doAjax(url){ if(url.match('^http')){ $.getJSON("http://query.yahooapis.com/v1/public/yql?"+ "q=select%20*%20from%20html%20where%20url%3D%22"+ encodeURIComponent("http://www.yahoo.com")+ "%22&format=xml'&callback=?", function(data){ if(data.results[0]){ var data = filterData(data.results[0]); container.html(data); } else { var errormsg = '<p>Error: could not load the page.</p>'; container.html(errormsg); } } ); } else { $('#target').load(url); } } function filterData(data){ data = data.replace(/<?\/body[^>]*>/g,''); data = data.replace(/[\r|\n]+/g,''); data = data.replace(/<--[\S\s]*?-->/g,''); data = data.replace(/<noscript[^>]*>[\S\s]*?<\/noscript>/g,''); data = data.replace(/<script[^>]*>[\S\s]*?<\/script>/g,''); data = data.replace(/<script.*\/>/,''); return data; } });
Ne pouvons-nous pas créer quelque chose comme cette fonctionnalité en JavaScript. Je le demande parce que dans l'avenir si Yahooapi restreint cette fonctionnalité, que se passera-t-il?
@Nits Cochez cette page .. FRIHOST.com/forums/vt-32602.htmlled/a > Je n'ai pas essayé ça. BTW Ne pensez-vous pas que l'utilisation de jQuery est la méthode la plus facile. :)
C'est vraiment un moyen assez plus facile de gérer les demandes de domaine croisé. Comme certains des sites comme www.imdb.com rejette les demandes de YQL. P> p>
Je ne le pense pas. Cela ne fait aucune différence dans la même politique d'origine. Cela ne fonctionnera pas. La documentation de JQuery lui-même dit: "En raison des restrictions de sécurité du navigateur, la plupart des demandes" Ajax "sont soumises à la même politique d'origine; la demande ne peut pas récupérer avec succès les données d'un domaine, d'un sous-domaine ou d'un protocole différent." Je ne comprends pas pourquoi vous acceptez cette mauvaise réponse de vous-même ...
Cela ne fonctionne que parce que la requête n'était pas croisée en premier lieu, ce n'est donc pas une réponse valide à la question.
La solution pour votre cas est JSON avec PADDING ou JSONP.
Vous aurez besoin d'un élément HTML spécifié pour son attribut SRC une URL qui renvoie JSON comme ceci: p> p> Vous pouvez rechercher en ligne pour Une explication plus approfondie, mais JSONP est définitivement votre solution pour cela. p> p>
Faites les étapes suivantes. 1: Ajouter un type de données: JSONP au script. 2: Ajouter un paramètre "rappel" à l'URL 3: Créez une fonction JavaScript avec le nom identique à la valeur paramétrice "Rappel". 4: La sortie peut être reçue à l'intérieur de la fonction JavaScript. P>
Voici un lien vers une question similaire avec quelques bonnes suggestions (une par moi) Stackoverflow.com/questions/7614420/...