155 votes

Pourquoi je vois une erreur « origine n’est pas autorisé par Access-Control-Allow-Origin » ici ?

Je vois le message d’erreur suivant :

avec ce code :

Ce qui peut provoquer ce, et comment le résoudre ?

171voto

andreapier Points 1395

Javascript est limité à faire des requêtes ajax. La limite vient lorsque vous essayez de faire des demandes à l'extérieur de votre domaine.

  • Ex 1: votre domaine est example.com et vous souhaitez faire une demande d'test.com => vous ne pouvez pas.
  • Ex 2: votre domaine est example.com et vous souhaitez faire une demande d'inner.example.com => vous ne pouvez pas.
  • Ex 3: votre domaine est de donner l'exemple.com:80 et vous souhaitez faire une demande à l'exemple.com:81 => vous ne pouvez pas
  • EX 4: votre domaine est example.com et vous souhaitez faire une demande d'example.com => vous pouvez.

Javascript est limitée par le "même de la politique d'origine" pour des raisons de sécurité, de sorte qu'un script malveillant ne peut pas contacter le serveur distant et d'envoyer des données sensibles.

jsonp est une façon différente d'utiliser le javascript. Vous faites une demande et les résultats sont encapsulé dans une fonction de callback qui est exécuté sur le client. C'est la même que la liaison d'une nouvelle balise de script dans le head de votre page html (vous savez que vous pouvez charger des scripts à partir de différents domaines que la vôtre ici).
Toutefois, pour utiliser jsonp le serveur doit être configuré correctement. si ce n'est pas le cas, vous ne pouvez pas utiliser jsonp et vous DEVEZ relais sur un serveur proxy côté (PHP, ASP, etc.). Il ya beaucoup de guides relatifs à ce sujet, il suffit de google!

88voto

Sunny Points 1468

XMLHttpRequest ne vous permettra pas d'atteindre localhost:8080 en raison de la "même origine".

Vous pouvez autoriser les demandes de navigateurs modernes par l'ajout d'un en-tête à votre réponse sur localhost:8080:

Access-Control-Allow-Origin: *

Vous pouvez le faire en ajoutant des directives à votre serveur HTTP ou ajouter des en-têtes via le code côté serveur (PHP, Ruby, ...).

Lire plus sur de la Croix-Origine des requêtes ajax sur https://developer.mozilla.org/en/http_access_control

38voto

Deqing Points 2178

Si vous utilisez Chrome, une solution simple (uniquement pour des fins de développement) consiste à utiliser l’option `` .

9voto

Eric Leroy Points 922

Si votre utilisation d’apache, cela fonctionne : mettre cela dans / créer un fichier .htaccess à la racine de votre publique et ajouter d’autres extensions de fichier que vous pourriez avoir besoin.

8voto

Christian Müller Points 161

Pour le développement local, vous pouvez utiliser un outil permettant de modifier les en-têtes de réponse HTTP. Par exemple, Charles est capable de faire cela par l’outil de réécriture inclus : Outil de réécriture

Il suffit d’ajouter une nouvelle règle pour le domaine/emplacement cible avec :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X