Je joue avec une colonne vertébrale dans ma console chromée et que je rencontre un problème de cross-domain que je ne peux pas comprendre.
L'hôte que je me connecte à vraisemblablement implémente correctement Cors, car une demande de demande XHR brute Le JSON attendu: p> (journal 3 xHR Événements de progression sur la console avec les données correctes dans la réponse) P> mais quand je fais ce qui suit BACKBONE Le navigateur ne l'aime pas: p> (renvoie Y a-t-il quelque chose que je dois faire pour dire à la colonne vertébrale de travailler avec Cors? Cette erreur semble être venue avant que le navigateur ait même fait une demande, donc je ne pense pas que ce soit une erreur de configuration du serveur. P> P> xmlhttprequest ne peut pas charger http://example.com:3000/entitis/item/. origine http: // localhost: 8000 n'est pas autorisé par l'accès à la commande d'accès. code>) p>
3 Réponses :
J'espère que l'une d'entre elles aide (je n'ai pas encore essayé):
1. $.ajaxPrefilter(function(options, originalOptions, jqXHR) {
options.crossDomain ={
crossDomain: true
};
options.xhrFields = {
withCredentials: true
};
});
xhrfields.withpredentials code> s'écrasera dans Firefox si vous faites des appels AJAX synchrones, par exemple charger un modèle avant de rendu. Heureusement, mes modèles sont sur le même domaine pour que je puisse simplement envelopper ce qui précède dans
si (originaloption.async! == faux) code> bloc
Où dois-je ajouter la mise à jour de la méthode de synchronisation? Dans Backbone.js ou mon script?
Il s'avère les URL que je demandais avec une colonne vertébrale était légèrement différente de celle demandée via le XHR (ils manquaient un queryarg). Cela a causé le serveur à 500, qui n'a pas les en-têtes Cors. Chrome n'a montré à la requête HTTP du tout dans l'onglet Réseau du panneau de débogage, alors j'étais extrêmement confus. P>
Fixation du 500 sur le serveur a rendu ce travail à nouveau. P>
Hey, vous pouvez utiliser quelque chose comme: La touche est que nous devons utiliser 'JSONP' P> P>
Vous pouvez désactiver la même stratégie d'origine dans Chrome, ici expliqua comment le désactiver sur Chrome.
Merci pour la pointe, mais je ne veux pas le désactiver (ceci est conçu pour fonctionner sur des navigateurs Web réguliers).
Ensuite, peut-être Ceci aide.
Oui, comme je l'ai dit dans la question, les Cors fonctionnent bien sur le côté du serveur, car le navigateur est capable de faire des demandes avec une standard XMLHTTPQUEST.