MooTools requête CORS vs native Javascript

J'ai ce code MooTools:

new Request.JSON({ method: 'POST', url: URL, /*URL TO ANOTHER DOMAIN*/ onSuccess: function(r){ callback(r); } }).post(data); 

Et ce code n'émet pas de requêtes POST (OPTIONS uniquement) … Regardez le code ci-dessous (il fonctionne très bien):

 var http = null, params = Object.toQueryString(data); try { http = new XMLHttpRequest(); } catch (e) { try { http = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { http = null; alert("Your browser does not support AJAX!"); } } } var url = URL; http.onreadystatechange = function () { if (http.readyState == 4 && http.status == 200) { var jsonData = JSON.parse(http.responseText); /*OR EVAL*/ callback(jsonData); } }; http.open("POST", url); http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); http.send(params); 

EDIT :

.setHeader('Content-Type','application/x-www-form-urlencoded'); : .setHeader('Content-Type','application/x-www-form-urlencoded');
Toujours rien … Où peut-il y avoir un problème?

Merci!

C'est parce que MooTools regroupe des éléments supplémentaires avec les en-têtes des requêtes.

par exemple. Si votre htaccess dit:

 Header set Access-Control-Allow-Origin: * 

Vous devez faire votre demande comme ça:

 var foo = new Request({ url: 'http://fragged.org/Epitome/example/data/', method: 'get', onComplete: function (data) { // returns an object with name and surname new Element('div[html="{name} {surname}"]'.substitute(JSON.decode(data))).inject(document.body); } }); // need to remove that or CORS will need to match it specifically delete foo.headers['X-Requested-With']; foo.send(); 

C'est pourquoi vous ne voyez que les OPTIONS avant le vol. Cela ne vous aime pas 🙂

Vous pouvez modifier le .htaccess pour également associer X-Requested-With , qui est probablement une "sécurité" supplémentaire.

Voir http://jsfiddle.net/7zUSu/1/ pour un exemple de travail – je l'ai fait il y a quelque temps lorsque je voulais obtenir cette modification sur Request https://github.com/mootools/mootools-core/issues/2381 fixé.

Que voulez-vous dire par (OPTIONS seulement)? Les deux exemples envoient une demande POST, la seule différence est dans Accepter les en-têtes de demande.

MooTools envoie Accept: application/json , tandis que native envoie Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 .

Cela peut affecter la réponse du serveur.