Erreur: "Origine null n'est pas autorisé par Access-Control-Allow-Origin" lors du chargement d'un fichier XML avec la méthode ajax de JQuery
C'est mon code:
this.loadMap = function () {
this._map = null;
this._width = 0;
this._height = 0;
this._playerX = 0;
this._playerY = 0;
this.finished = false;
this.loaded = false;
$.ajax({
type: "GET",
url: "maze1.xml",
dataType: "xml",
success: this.parseXmlMap,
context: this
});
};
L'erreur que j'obtiens est
"XMLHttpRequest ne peut pas charger
file:///C:/wamp/www/mazegame/maze1.xml.
Origine null n'est pas autorisé par
Access-Control-Allow-Origin".
Ce même script fonctionne très bien dans Firefox
source d'informationauteur eabait
Vous devez vous connecter pour publier un commentaire.
Vous testez cela en Chrome? Ce qui est en gros ce qui se passe est parce que vous êtes en train de charger le fichier à partir de votre système de fichiers, au lieu de partir d'un serveur, google Chrome est le réglage de votre origine à
null
même si la ressource que vous demandez est local. Si vous deviez le faire à partir d'un serveur HTTP comme Apache, je pense qu'il serait très bien fonctionner.Oui, Google a béni la sagesse a décidé que Chrome ne sera pas permettre à un accès aux fichiers locaux pour d'obscure raisons de sécurité. Tous les deux fichiers locaux sont considérées comme si elles étaient de différents domaines, et d'accéder à un fichier local est considéré comme un cross-site request.
Il y a une solution, mais seulement utile dans certaines situations: Si vous pouvez l'exécuter Chrome avec un paramètre de ligne de commande
--allow-file-access-from-files
la vérification de la sécurité ne sera pas fait.J'ai eu ce même problème avec google Chrome (Version 20.0.1132.57) et à l'aide de --allow-l'accès de fichier de fichiers ne fonctionne pas pour moi (sur Ubuntu 12.04).
Mais, à l'aide de la commande
python -m SimpleHTTPServer
dans le répertoire qui contient les localfiles je suis en train de tester avec me permet de contourner le problème. Cette commande lance un serveur HTTP qui sert le répertoire courant de l'arbre àhttp://localhost:8000/
Donc, si j'ai un fichier test.html qui utilise un appel ajax pour un fichier dans le même dir que je peux utiliser
http://localhost:8000/test.html
et Chrome va être ok avec elle. Pour moi, c'est très bien pour les locaux dev/test.Je suis tombé sur cette commande sur http://www.commandlinefu.com.
Juste pour rappeler ce que Paul & Mastodonte dit:
Dans OSX ouvrir un terminal et coller cette commande
Vous essayez d'accéder à la page web et de ressources fichier en tant que fichier de route file:///
Vous pouvez effectuer les opérations suivantes dans OSX
essayez de demande de page web avec serveur local (http://localhost/your_website.html)
lire plus sur le site et à iFrame
http://weblog.bocoup.com/third-party-javascript-development-future/