Question sur AJAX (XMLHttpRequest)

steeve93800 -  
burnedsyn Messages postés 174 Statut Membre -
Bonjour,
voila en fait je voudrai savoir pourquoi je ne peut pas acceder un site distant avec ajax a l'aide la methode open de l'objet XMLHttpRequest ?
par exemple quand je fait xhr.open("GET","ajax.php",true); j'arrive bien a recuperer le fichier ajax.php.

mais si je fais xhr.open("GET","https://www.google.fr/?gws_rd=ssl",true);

ou
xhr.open("GET","http://192.168.103.111",true); (qui est un site sur mon autre pc)

je n'obtient rien donc ma question est:

est ce normale que cette methode ne prend en compte que les fichiers dans le serveur locale?

et existe t il un moyen d'acceder a un site distant.

merci d'avance pour vos reponses.

1 réponse

Enzyme59
 
C'est peut-être parce que les deux adresses que tu fournis se limitent au nom de domaine et ne spécifient pas de fichier particulier... tu as essayé avec une URL du style "http://192.168.103.111/ajax.php" ?

Bonne journée
0
steeve93800
 
si j'ai deja specifier un nom de fichier comme http://192.168.103.111/rc.cgi?v=20

et pouratnt ce fichier est bien dispo car quand j'utilise la commande wget pour recuperer ce fichier sa marche donc ya un probleme quelque part
0
burnedsyn Messages postés 174 Statut Membre 16 > steeve93800
 
Si je ne me trompe pas xmlhttrequest ne peut ouvrir qu'une page sur l'url d'origine ce que tu peux faire pour contourner cela c'est de faire un fichier sur ton serveur de base qui lui bufferise un wget ou fopen de ton fichier cible et renvois ce buffer a ta page
0
steeve93800 > burnedsyn Messages postés 174 Statut Membre
 
merci burnedsyn mais est ce que qu'elqu'un peut confirmer l'info comme quoi xmlhttrequest ne peut ouvrir qu'une page sur l'url d'origine

merci
0
burnedsyn Messages postés 174 Statut Membre 16 > steeve93800
 
Pour être plus précis :

L'objet xmlhttprequest avant d'etre déclaré on peut ajouter cela pour autant que le serveur distant ai un certificat (je n'ai jamais essayé personnelement) je t'explique pourquoi après :)

try {
netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
}
catch(e) {
alert('erreur');
}

mais cela ne fonctionnera que sous gecko ...

Donc la solution universel est de faire un mini proxy sur ton serveur

ou tu appelle toi meme la page que tu veux :

exemple

echo file_get_contents("http://nomserveur.ext/scriptexterne.php?variable=".$variable);

voila
0