[ 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
Pour "Error: uncaught exception: Permission denied to call method MLHttpRequest.open" j'ai trouvé ça :
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 */}
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)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...
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
Partager