2011-09-27 3 views
0

Je suis en train d'accéder de ressources à partir de plusieurs serveurs en utilisant AJAX, et je suis en cours d'exécution dans ce problème:XMLHttpRequest ne peut pas charger

XMLHttpRequest cannot load http://first.mydomain.com. Origin http://second.mydomain.com is not allowed by Access-Control-Allow-Origin. 

Avec le code suivant

for (i in domains) 
    { 
     var url = 'http://'+domains[i]+'/mgmt/json/queue_status.php'; 
     requests[i]=new request(url); 
     break; 
    } 

    function request(url) 
    { 
     var queues = {}; 
     http_request = new XMLHttpRequest(); 
     http_request.open("GET", url, true, 'username', 'password'); 
     http_request.onreadystatechange = function() { 
      var done = 4, ok = 200; 
      if (http_request.readyState == done && http_request.status == ok) { 
       queues = JSON.parse(http_request.responseText); 
       var queuesDiv = document.getElementById('queues'); 
       print_queues(queues, queuesDiv);     
      } 
     } 
     http_request.send(null); 
    } 

J'ai ajouté ce qui suit à page de réponse demandée.

header('Access-Control-Allow-Origin: *'); 

J'ai essayé de nommer explicitement le demandeur sans succès.

Merci

PS: Le code ci-dessus, je suis sûr ins't parfait, mais fonctionnent bien quand essayant seulement aux demandes de la ressource du serveur hôte.

+5

Classique. Cela se produit en raison de la [Politique de même origine] (http://en.wikipedia.org/wiki/Same_origin_policy) –

+0

Ok, mais est-il possible de contourner cela? – 111111

+0

Oui, via les rappels JSONP et l'injection de tag «

Questions connexes