Y a-t-il un moyen de permettre plusieurs domaines croisés en utilisant l'en-tête Access-Control-Allow-Origin
?
Je connais le *
, mais c'est trop ouvert. Je veux vraiment autoriser seulement quelques domaines.
Par exemple, quelque chose comme ceci :
Access-Control-Allow-Origin: http://domain1.example, http://domain2.example
J'ai essayé le code ci-dessus mais cela ne semble pas fonctionner dans Firefox.
Est-il possible de spécifier plusieurs domaines ou suis-je coincé avec un seul ?
12 votes
Plutôt que d'autoriser une liste d'origines séparées par des espaces, (origin-list-or-null) est soit une seule origine, soit la chaîne "null". (merci @maxpolk)
3 votes
En utilisant le navigateur Firefox le plus récent, ni les domaines séparés par des virgules ni les domaines séparés par des espaces n'ont fonctionné. Faire correspondre une liste de domaines et mettre un unique hôte dans les en-têtes est toujours une meilleure sécurité et fonctionne correctement.
2 votes
Si vous avez des difficultés avec cela pour HTTPS, j'ai trouvé une solution.
0 votes
@sam ou "*" ?
Partagé basé en retournant la valeur de l'en-tête de requête d'origine, "*", ou "null"
13 votes
Note importante: autoriser uniquement certains domaines dans l'en-tête
Access-Control-Allow-Origin
ne signifie pas que d'autres domaines ne peuvent pas déclencher une méthode sur ce point de terminaison (par exemple une méthode API REST). Cela signifie simplement que les origines interdites ne peuvent pas utiliser le résultat en javascript (le navigateur s'assure de cela). Pour restreindre l'accès à un point de terminaison pour des domaines spécifiques, utilisez un filtre de requête côté serveur qui renvoie par exemple un HTTP 401 pour les domaines non autorisés.2 votes
Vous devriez toujours ajouter l'en-tête
Vary: Origin
lorsque vous souhaitez utiliser plusieurs URL, voir : fetch.spec.whatwg.org/#cors-protocol-and-http-caches