Question sur AJAX (XMLHttpRequest)

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.
Configuration: Linux Debian
Mozilla 1.8.1.12

1 réponse

  1. 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
    1. 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
    2. @steeve93800Si 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
    3. @burnedsynmerci 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
    4. @steeve93800Pour ê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