IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] requéte sur un domaine différent


Sujet :

JavaScript

  1. #1
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut [AJAX] requéte sur un domaine différent
    [ AJAX ] requéte sur un domaine différent
    [ Error: uncaught exception: Permission denied to call method XMLHttpRequest.open ]
    [ Error: uncaught exception: Permission denied to call method XMLDocument.load ]


    Salut @tous.

    Je suis en tain de développer un ptit lecteur de flux RSS entiérement en javascript.

    Mais j'arrive pas à récupérer les fichiers XML pour la simple raison qu'ils sont sur des domaines différents du miens



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    function readRSS(URI) 
    {
    	alert("readRSS(URI) : URI = " + URI);
    	var xmlDoc;
    	if(window.ActiveXObject) 
    	{
    		/*
    		Sous internet explorer : pas de pb (pour une foi .....)
    		*/
    		alert("Windows");
    		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    		xmlDoc.async=false;
    		while(xmlDoc.readyState!=4) 
    			document.write('Loading...');
    		xmlDoc.load(URI);
    		readRSS_suite(URI);
    	}
    	else if(document.implementation&&document.implementation.createDocument)
    	{
    		/*
    		par contre sous fofofox ... ba ça marche po .. 
    		*/
    		alert("NS");
     
    		function xmlLoad() {
    			alert("NS : document chargé " + xmlDoc);
    			readRSS_suite(xmlDoc);
    		}
    		xmlDoc = document.implementation.createDocument('','doc',null);
    		xmlDoc.onload = xmlLoad;
    		alert("NS : juste avant load ");
    		xmlDoc.load(URI); // <==
    		// Error: uncaught exception: Permission denied to call method XMLDocument.load
    		*/
     
    		var xmlDoc = document.implementation.createDocument('','doc',null);
    		var objXMLHTTP = new XMLHttpRequest();
    		objXMLHTTP.open("GET", URI, false); // <==
    		// Error: uncaught exception: Permission denied to call method XMLHttpRequest.open
    		objXMLHTTP.send(null);
    		xmlDoc = objXMLHTTP.responseXML;
    		readRSS_suite(xmlDoc);
    	}
    }// fin de readRSS(URI)
     
    function readRSS_suite(xmlDoc){/* blablabla */}
    Pour "Error: uncaught exception: Permission denied to call method MLHttpRequest.open" j'ai trouvé ça :

    il n'est pas possible, en utilisant XMLHttpRequest,
    d'effectuer des requêtes vers un domaine autre que celui sur lequel votre application est hébergée.
    Par exemple, si on remplace le http.open de l'application présentée en exemple plus haut par ceci :

    http.open('get', 'http://www.google.fr/', true);

    La console JavaScript affichera un message d'erreur, de la forme
    "Permission Denied to call method XMLHttpRequest.open"
    (Sous Firefox 1.5), ou un message d'avertissement de sécurité.
    (A moins bien sûr que vous ne soyez développeur chez google ^^)
    Cette limitation est probablement présente, à mon avis, pour des questions de sécurité...
    Même si je dois admettre que, parfois, son absence pourrait simplifier certaines tâches...
    et j'ai trouver à peut prés la même chose pour "XMLDocument.load" mais je suis le premier françait à en parler (d'aprés google)

    Donc voila comment faire une requéte ajax vers un domaine différent de celui du js ?

    Je sais que c'est possible (google y arrive (d'ailleur j'arrive pas à retrouver leur bibliothéques))

    Aller bon code à tous
    Orthographe => Message Privé constructif svp

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 289
    Points
    3 289
    Par défaut
    Citation Envoyé par SoF_AzraeL
    Pour "Error: uncaught exception: Permission denied to call method MLHttpRequest.open" j'ai trouvé ça :

    ...

    et j'ai trouver à peut prés la même chose pour "XMLDocument.load" mais je suis le premier françait à en parler (d'aprés google)

    Donc voila comment faire une requéte ajax vers un domaine différent de celui du js ?

    Je sais que c'est possible (google y arrive (d'ailleur j'arrive pas à retrouver leur bibliothéques))

    Aller bon code à tous
    C'est impossible...

    Google utilise une lecture DEPUIS le serveur (en PHP, donc)

    Tu peux aussi utiliser le subterfuge suivant :
    http://www.monserveur.ext/transmit.php?url=http://site.ext/rss qui renvoirait "http://site.ext/rss"...
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  3. #3
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    Oki merci Frémy
    enfin je suis un peut déssus qu'il n'y est pas moyen de de régler ce pb plus simplement..

    j'ai donc fait ça :
    <?php
    $urlrss = "http://localhost/LDFRSSJS/exemple.xml";
    if(isset($_GET['urlrss'])){$urlrss = $_GET['urlrss'];}

    // récupération du fichier par paquets de 4096
    // echo "urlrss = ".$urlrss;

    $fp = fopen($urlrss, "r");
    while (!feof ($fp))
    {
    $data .= fgets($fp, 4096);
    }
    fclose ($fp);

    //sécurité ??
    //$data = str_replace("<script","&lt;script",$data);

    header("style-sheet text/xml");
    echo $data;
    ?>
    et j'ai mit ça dans mon javascript
    objXMLHTTP.open("GET", "getRSSenPHP.php?urlrss=" + URI, false);

    bon je rencontre de nouvelles difficultés. y'a un endroit ou ça boucle (et c'est pas dans le php)
    Je vous tiend au courant
    Orthographe => Message Privé constructif svp

Discussions similaires

  1. Requête sur deux BD différentes
    Par ZIED dans le forum Requêtes
    Réponses: 4
    Dernier message: 13/12/2010, 22h19
  2. Réponses: 1
    Dernier message: 26/01/2010, 14h24
  3. Requête sur 2 schémas différents
    Par Tartenpion dans le forum SQL
    Réponses: 2
    Dernier message: 14/09/2008, 10h03
  4. Réponses: 3
    Dernier message: 09/07/2008, 01h25
  5. Réponses: 2
    Dernier message: 02/12/2005, 04h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo