Comment jQuery effectue-t-il ses appels ajax entre domaines et comment puis-je les répliquer avec mootools?

dans mon éternel combat interne pour restr avec mootools ou pour aller à jQuery, j’ai trouvé dans la documentation de jQuery quelque chose qui a attiré mon attention et c’est que jQuery peut demander un JSON vers un domaine différent, ce qui est généralement interdit par le navigateur .

J’ai déjà vu des solutions de contournement pour plusieurs sous-domaines, mais jamais entre domaines, et j’en suis vraiment ravi. D’abord, je pensais être lié au serveur, mais en expérimentant un peu plus, j’ai constaté que faire la même demande JSON à partir de jQuery La documentation sur Mootools ne fonctionne pas!

Cela fonctionne jQuery:

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function(data){ $.each(data.items, function(i,item){ $("").attr("src", item.media.m).appendTo("#images"); if ( i == 3 ) return false; }); }); 

Cela ne veut pas Mootools:

 var jsonRequest = new Request.JSON({url: "http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", onComplete: function(person, responseText){ alert(responseText); }}).get({}); 

Comment puis-je reproduire ce comportement? quelles sont les causes ?

jQuery Doc: http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback Doc Mootols: http://mootools.net/docs/Request/Request.JSON

Il est dit juste sur la page qu’il s’agit de JSONP.

JSONP est une astuce où le serveur, au lieu de renvoyer la réponse habituelle, l’enveloppe dans un appel de méthode de la méthode fournie par l’utilisateur, par exemple à la place de:

{"foo": "bar", "baz":"bah"}

Il reviendrait:

temporaryCallbackFunctionName({"foo": "bar", "baz":"bah"});

jQuery définit la fonction de rappel temporaire et insère un élément , qui n’est pas limité par la même stratégie d’origine.

Lorsque le script est chargé, la fonction est exécutée et c’est tout.

L’inconvénient est que si le serveur est diabolique (ou piraté), il peut maintenant exécuter du code arbitraire dans votre navigateur.

Plus d’infos ici .

Vous pouvez utiliser JSONP dans MooTools en utilisant un plugin, JSONP . Il est fait par Aaron Newton , l’un des développeurs principaux de MooTools.

Ceci est plus inclus dans MooTools depuis la v1.2.2 (publié le 23 avril 2009).

Consultez cette page de documentation pour plus d’informations.

Il semble que vous ne puissiez pas le faire avec Mootools, d’après sa documentation API et ce forum .

La raison pour laquelle cela est limité est probablement due aux attaques de script inter-sites .