Permettre à plusieurs CORS de domaine dans l'express js
Comment puis-je permettre à de multiples domaines de la SCRO à exprimer de manière simplifiée.
J'ai
cors: {
origin: "www.one.com";
}
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", cors.origin);
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
Cela fonctionne quand il n'y a qu'un seul domaine mentionné dans origin
Mais si je veux avoir origin
comme un ensemble de domaines et je veux permettre à la SCRO pour tous les domaines de l'origine de tableau, j'aurais quelque chose comme cela -
cors: {
origin: ["www.one.com","www.two.com","www.three.com"];
}
Mais alors, le problème est que ce code ci-dessous ne serait pas de travail
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", cors.origin);
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
Comment puis-je faire res.header
prendre un éventail de domaines via cors.origin
?
quel est le problème avec l'utilisation de "*" au lieu d'un domaine ou les deux?
* ne voudrais pas mettre tout CORS du filtre. * serait essentiellement permettre à tous de domaine qui, de toute évidence, je ne veux pas.
rappelez-vous juste de la scro affecte uniquement les navigateurs, de sorte que la sécurité n'a rien à voir avec de la scro.
Oui d'accord, mais est-ce une bonne pratique à mettre * ?
à l'aide de "*" permet de redimensionner et de déplacer des trucs un peu plus tard sans coder en dur les domaines. je ne connais pas d'inconvénients majeurs, et n'importe qui peut toujours utiliser JS pour la commande ping sur votre serveur et de montrer vos images/vidéos sans la SCRO. avec postMessage(), "*" est une mauvaise idée, mais avec de la SCRO c'est groovy.
* ne voudrais pas mettre tout CORS du filtre. * serait essentiellement permettre à tous de domaine qui, de toute évidence, je ne veux pas.
rappelez-vous juste de la scro affecte uniquement les navigateurs, de sorte que la sécurité n'a rien à voir avec de la scro.
Oui d'accord, mais est-ce une bonne pratique à mettre * ?
à l'aide de "*" permet de redimensionner et de déplacer des trucs un peu plus tard sans coder en dur les domaines. je ne connais pas d'inconvénients majeurs, et n'importe qui peut toujours utiliser JS pour la commande ping sur votre serveur et de montrer vos images/vidéos sans la SCRO. avec postMessage(), "*" est une mauvaise idée, mais avec de la SCRO c'est groovy.
OriginalL'auteur Ajey | 2014-11-18
Vous devez vous connecter pour publier un commentaire.
Je recommanderais de la scro-module: https://www.npmjs.org/package/cors
Il ne ce genre de choses pour vous - cocher la case "La configuration de la SCRO w/Dynamique Origine"-Section
un module est juste le code de quelqu'un d'autre l'a déjà écrit pour résoudre votre problème. En nodejs la programmation, de la grande bibliothèque de modules open source sont l'un des grands avantages, il serait dommage de les ignorer. Si vous le souhaitez, vous pouvez parcourir la SCRO module sur github à regarder le code pour voir ce qu'il fait. Le code est ici.
J'ai utilisé le module npm. Je vous remercie.
bonne décision 🙂 auriez-vous l'esprit d'approuver ma réponse puisque vous l'avez accepté?
OriginalL'auteur Johannes Reuter
Permet de comprendre comment cet en-tête fonctionne.
"Access-Control-Allow-Origin" n'accepte qu'une chaîne de caractères.
Donc, pour le rendre dynamique vous avez besoin pour obtenir la demande de l'hôte à partir de l'en-tête http. Comparez-la à votre tableau de autorisé domaines. Si elle est présente, puis ajouter qu'en tant que valeur de l'en-tête, le reste de l'ajout d'une valeur par défaut sera interdit non autorisée domaines de l'accès à l'API.
Il n'est pas natif de la mise en œuvre de cette. Vous pouvez le faire vous-même à l'aide du code ci-dessous.
$.ajax
àwww.one.com
, quelle est la valeur que vous obtenez surreq.header('host')
?, dans mes tests, je reçoiswww.one.com
qui permettrait de faire le chèque pense que c'est un domaine autorisé, quelqu'un peut-il confirmer ou clarifier ce qui est faux dans mon test?Changement
req.header('host')
àreq.header('origin')
OriginalL'auteur AlphaLeader
En fait, Access-Control-Allow-Origin en-tête doit être de la même valeur que le Origine en-tête tant que vous voulez autoriser.
De base sur votre code juste
https://www.one.com.my.malicious.site.com
.OriginalL'auteur lugy90