2008-11-27 6 views
14

Existe-t-il un moyen d'utiliser XMLHttpRequest en combinaison avec d'autres domaines?Puis-je créer une demande XMLHttpRequest pour un autre domaine?

Je voudrais analyser du xml à partir de Google sans avoir à utiliser un serveur, donc il est complexe à exécuter.

var req = getXmlHttpRequestObject(); 
... 
req.open('GET', 'http://www.google.de/ig/api?weather=Braunschweig', true); 
     req.setRequestHeader("Content-Type","text/xml"); 
     req.onreadystatechange = setMessage; 
     req.send(null); 

Faire sur le côté serveur est aucune option au moins je n'aurais pas demander

Répondre

10

Non, pas en ce moment. Je crois avoir lu que les plans et les conceptions sont en cours d'élaboration par des groupes de normalisation pour l'avenir, afin que nous puissions le faire en toute sécurité.

Les vulnérabilités de script inter-sites seraient très répandues.

JSONP est une solution possible si l'API des autres sites prend en charge.

+0

jsonp est le mot magique , +1 –

2

C'est un problème de sécurité, la plupart (tous?) Les navigateurs ne vous laissera pas faire cela. Vous pouvez utiliser un IFrame caché pour faire vos corvées, mais c'est assez complexe pour utiliser un serveur (ou passer à une autre langue, si je n'ai pas besoin de courir dans un navigateur)

+0

Même avec un Iframe caché, vous n'êtes toujours pas autorisé à trouver le contenu de quelque chose qui provient d'un autre domaine –

0

Ce n'est pas possible en raison de la SOP (même règle d'origine) ce navigateur a ces jours pour restreindre les attaques XSS.
Vous devrez utiliser un script côté serveur (PHP ou autre).

0

Vous pouvez essayer de faire quelque chose sur le côté serveur. Ainsi, sur votre application, vous faites la demande au site distant d'obtenir le résultat et de le renvoyer à votre client. L'appel AJAX appelle alors uniquement votre propre serveur et fonctionne.

+1

Avez-vous lu ma description? – Thomaschaaf

0

Il est possible de faire un XHR à un autre domaine avec HTML5.You peut également différentes demande de protocole avec XHR lors de la communication avec HTTP vers un autre site Web.

1

Vous ne pouvez pas effectuer de demande de domaine croisé, par ex. de example1.com à example2.com via XMLHttpRequest ou jQuery (qui est un wrapper de XMLHttpRequest) en raison d'un problème de sécurité côté client (navigateur). Cela peut être implémenté efficacement dans un navigateur moderne supportant HTML5 via CORS (partage de ressources d'origine croisée, qui ne peut pas être disponible dans tous les navigateurs client.) La solution est d'insérer une balise script dans example1.com de example2.com, et cette solution est connue comme JSON-P (JSON avec remplissage), le nom peut être trompeur car les données peuvent être dans n'importe quel format servi par le serveur (exemple2.com) Son code d'implémentation est donné dans ce lien http://newtechinfo.net/jsonp-for-cross-domain-ajax/

Questions connexes