Origine http://localhost n'est pas autorisé par Access-Control-Allow-Origin
Je suis en train de faire une extraction de backbone.js à mon node.js serveur. Cependant, j'obtiens l'erreur suivante dans la console:
Origin http://localhost is not allowed by Access-Control-Allow-Origin.
J'ai ajouté ce qui suit à mon node.js serveur:
var allowCrossDomain = function(req, res, next) {
res.header('Access-Control-Allow-Origin', "http://localhost");
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
};
app.configure(function() {
app.use(allowCrossDomain);
});
Mais c'est toujours retourner la même erreur. Cependant, même si cela n'travail, il ne semble pas comme la solution idéale, car je voudrais que les utilisateurs de partout pour être en mesure d'envoyer des demandes.
Vous pouvez utiliser l'option " * " à la place de localhost dans ce cas. Je ne suis pas familier avec le Noeud cependant, je ne sais pas si c'est la réponse, ou si son configurer un problème.
Voir si cela aide les stackoverflow.com/questions/15534640/...
Vous êtes dans l'erreur.
qu'est-ce que l'app dans l'app.configurer?
Voir si cela aide les stackoverflow.com/questions/15534640/...
Vous êtes dans l'erreur.
http://localhost
est correct et vous devez le supprimer de votre commentaire pour éviter toute confusion.qu'est-ce que l'app dans l'app.configurer?
OriginalL'auteur Willem Ellis | 2013-04-16
Vous devez vous connecter pour publier un commentaire.
Si vous voulez tout le monde à être en mesure d'accéder le Nœud de l'application, puis essayez d'utiliser
Qui permettra aux demandes de n'importe quelle origine. Le La SCRO permettre site a beaucoup d'informations sur les différents Access-Control-Allow-têtes et comment les utiliser.
Je vous utilisez google Chrome, veuillez jeter un oeil à cette bug bug concernant localhost et Access-Control-Allow-Origin. Il y a un autre StackOverflow question ici que les détails de la question.
Il serait trompeur d'appeler cette méthode "safe", mais je l'ai déjà utilisé dans des situations où chaque requête AJAX porte son propre jeton d'authentification. La SCRO est destinée à empêcher les folk de tromper l'utilisateur de votre navigateur et accéder à des informations sensibles à partir de votre application. Vous devrait, idéalement, ajouter un en-tête pour chaque légitimes possibles emplacement de votre épine dorsale de l'application peut être servi à partir de.
Super, merci pour l'aide!
Que faire si je suis en utilisant la 3ème Partie de l'API ? Je ne peux pas ajouter "Autoriser l'Accès" sur leur serveur. Vous êtes montrant exemple de projet local. Je vais avoir le même problème mais avec ma demande va à l'url d'un autre site. Comment réparer une idée ?
La SCRO est spécifiquement conçue pour prévenir de ce que vous essayez de le faire 🙂 Il y a des implications en matière de sécurité dans certaines situations. Ce que vous pouvez faire à la place est de construire un proxy pour la 3ème partie de l'API. Votre webapp requêtes de votre proxy et celui-ci fait des appels à la 3ème partie de l'API. Maintenant, vous avez le contrôle sur l'en-tête de votre proxy et celui-ci est autorisé à appeler la 3ème partie de l'API.
OriginalL'auteur ryanday
Si vous faites l'extraction de l'appel à votre localhost qui je suppose est dirigée par node.js dans le même répertoire que votre colonne vertébrale code, qu'il sera probablement sur
http://localhost:3000
ou quelque chose comme ça. Que ce doit être votre modèle:Et dans votre node.js vous avez maintenant à accepter cet appel comme ceci:
OriginalL'auteur Stevo Perisic
Il y a 2 appels à régler correctement les en-têtes. D'abord il y a un contrôle en amont de sorte que vous besoin de quelque chose comme...
puis ont les fonctions suivantes...
et pour la prévol
Vous pouvez consolider la res.l'en-tête() code en une seule fonction si vous le souhaitez.
Également comme indiqué ci-dessus, être prudent de l'aide
res.header('Access-Control-Allow-Origin', "*")
cela signifie que n'importe qui peut accéder à votre site!
OriginalL'auteur mstreffo
Par localhost, vous devez utiliser le
null
origine. Je vous recommande de créer une liste des hôtes autorisés et vérifier la requête duHost
en-tête. Si elle est contenue par la liste, puis par localhost envoyer unpar tout autre domaine un
Si elle n'est pas contenu dans la liste, puis renvoyer les serveurs de nom d'hôte, de sorte que le navigateur va se cacher la réponse de ces demandes.
Ce est beaucoup plus sûr, car en permettre l'origine * et de permettre à des informations d'identification, tout le monde sera capable, par exemple, de voler des données de profil d'un utilisateur connecté, etc...
Donc, pour résumer quelque chose comme ceci:
est la solution la plus sûre si vous voulez permettre à plusieurs autres domaines pour accéder à votre page. (Je pense que vous pouvez comprendre comment l'obtenir de l'hôte en-tête de requête et le serveur hôte par node.js.)
OriginalL'auteur inf3rno
Cette approche résolu mon problème pour permettre à plusieurs de domaine
OriginalL'auteur Ranjoy Ghosh