Origine <origine> n'est pas autorisé par Access-Control-Allow-Origin
XMLHttpRequest cannot load http://localhost:8080/api/test. Origin http://localhost:3000 is not allowed by Access-Control-Allow-Origin.
J'ai lu sur la croix domaine des requêtes ajax, et de comprendre les sous-jacents au problème de sécurité. Dans mon cas, les 2 serveurs sont exécutés localement, et de permettre la croix de domaine de demandes au cours de l'essai.
localhost:8080 - Google Appengine dev server
localhost:3000 - Node.js server
Je lance une requête ajax localhost:8080 - GAE server
alors que ma page est chargé à partir du nœud de serveur. Quelle est la méthode la plus simple et la plus sûre ( Ne voulons pas commencer à google chrome avec disable-web-security
option). Si je dois changer de 'Content-Type'
, dois-je le faire au niveau du nœud de serveur? Comment?
- Une solution plus rapide peut être trouvé ici: stackoverflow.com/a/21622564/4455570
Vous devez vous connecter pour publier un commentaire.
Depuis qu'ils sont en cours d'exécution sur des ports différents, ils sont différents JavaScript
origin
. Il n'importe pas qu'ils sont sur la même machine/nom d'hôte.Vous devez activer la SCRO sur le serveur (localhost:8080). Découvrez ce site: http://enable-cors.org/
Tout ce que vous devez faire est d'ajouter un en-tête HTTP pour le serveur:
Ou, pour plus de simplicité:
localhost
n'est pas assez sur son propre, et comme Michael l'a souligné, le port est obligatoire si vous n'êtes pas à l'aide d'un port standard.Access-Control-Allow-Origin
en-tête doit être ajouté à l'entête HTTP réponses que le serveur envoie. Cet en-tête doit être une partie de la réponse du serveur, il n'a pas besoin d'être partie de la demande du client. Plus précisément ce qui se passe avant que le client fait la demande réelle que vous voulez, le navigateur envoie uneOPTIONS
demande avant elle, et si la réponse du serveur pour queOPTIONS
requête ne doit pas contenir l'en-tête, le navigateur n'enverra pas votre demande.Access-Control-Allow-Origin: *
?Si vous avez besoin d'un travail rapide autour dans Chrome pour les requêtes ajax, ce plugin chrome automatiquement vous permet d'accéder à un site à partir de n'importe quelle source en ajoutant le bon en-tête de réponse
Extension Chrome Permettent-Control-Allow-Origin: *
Vous devez activer la SCRO pour résoudre ce
si votre application est créée avec de simples node.js
mettre dans vos en-têtes de réponse comme
si votre application est créée avec cadre express
utiliser un SCRO middleware comme
et de les appliquer via
Voici deux liens de référence
config.allowedDomains
. dire que dans mon cas, ce qui uri dois-je y mettre?*
ou laspecific domain
vous voulez accorder l'accès.app.configure()
n'est pas une erreur de fonction?J'accepte @Rocket hazmat de la réponse qu'il me conduire à la solution. En effet, il était sur le GAE serveur, j'ai besoin de définir l'en-tête. J'ai dû mettre ces
paramètre uniquement
"Access-Control-Allow-Origin"
a donné d'erreurAussi, si auth jeton doit être envoyé, ajouter ce trop
Aussi, au client, définir
withCredentials
cela provoque 2 demandes envoyées au serveur, l'un avec
OPTIONS
. Auth cookie n'est pas l'envoyer avec elle, donc de la nécessité de traiter à l'extérieur auth.J'ai été confronté à un problème lors de l'appel de la croix-de l'origine des ressources à l'aide d'ajax de google chrome.
J'ai utilisé node js et serveur http local pour déployer mon node js app.
J'ai été prise en réponse à l'erreur, lorsque j'accède à la croix-de l'origine des ressources
J'ai trouvé une solution sur ce ,
1) j'ai ajouté ci-dessous le code de mon app.js fichier
2) Dans ma page html appelée origine de la croix de la ressource à l'aide de
$.getJSON();
Si vous utilisez express, vous pouvez utiliser de la scro middleware comme suit:
Dans router.js ajoutez simplement le code avant d'appeler get/post méthodes. Il fonctionne pour moi sans erreurs.
Si vous avez obtenu 403 après cela, veuillez réduire filtres WEB.XML tomcat config à la suivante:
Ajouter à votre Serveur NodeJS ci-dessous les importations:
J'ai enfin eu la réponse pour apache Tomcat8
Vous devez éditer le fichier tomcat web.xml fichier.
probabily il sera à l'intérieur de répertoire webapps,
de le trouver et de le modifier
Cela permettra Access-Control-Allow-Origin tous les hôtes.
Si vous avez besoin de changer tous les hôtes uniquement sur votre hôte, vous pouvez modifier la
code ci-dessus à partir de * à votre http://your_public_IP ou http://www.example.com
vous pouvez consulter ici Tomcat filtre de la documentation
Grâce
utilisation dataType: 'jsonp', qui fonctionne pour moi.
Si vous êtes dans Google Chrome, essayez d'installer cet add-on:
https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi/related