gérer de multiples domaines avec Access-Control-Allow-Origin-tête dans Apache
Je veux configurer apache pour l'accès inter-domaine d'en-tête. J'ai essayé plusieurs combinaison, comme l'a suggéré sur le nombre de threads sur le forum. Mais sa ne fonctionne pas pour moi.
Les moyens, j'ai essayé:
1) Spécifier le domaine sur les différentes lignes comme ci-dessous avec Header set
:
Header set Access-Control-Allow-Origin "example1.com"
Header set Access-Control-Allow-Origin "example2.com"
Header set Access-Control-Allow-Origin: "example3.com"
Avec cette configuration, sa cueillette ne durent qu'un et ignorer le reste de tous.
2) Spécifier le domaine sur les différentes lignes comme ci-dessous avec Header add
:
Header add Access-Control-Allow-Origin "example1.com"
Header add Access-Control-Allow-Origin "example2.com"
Header add Access-Control-Allow-Origin: "example3.com"
Avec ce son, montrant tous les trois domaines dans la tête, mais les polices ne sont pas obtenir ramassé sur Firefox.
3.) Essayé d'Utiliser SetEnvIf
, mais encore une fois sa ne fonctionne pas :
SetEnvIf Origin "http(s)?://(www\.)?(mydomain.com|mydomain2.com)$" AccessControlAllowOrigin=$0$1
Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Enfin travailler avec des "*", mais je ne veux pas utiliser ce.
S'il vous plaît aider avec cela.
- Avez-vous lu celui-ci : stackoverflow.com/a/4730826/550618 pour les problèmes de 304 code de réponse?
- Si j'utilise "en-Tête set", puis son travail sur FF. Mais dans ce cas, Son seul la dernière de domaine 🙁 et je veux configurer de multiples domaines.
- le problème n'est pas
set
ouadd
, c'est pour ajouter de laalways
mot-clé - Toujours le même problème. Si j'utilise "toujours" mot-clé défini comme ci-dessous : en-Tête de toujours définir Access-Control-Allow-Origin "example1.com" en-Tête de toujours définir Access-Control-Allow-Origin "example2.com" en-Tête de toujours définir Access-Control-Allow-Origin: "example3.com" Puis, son seul la dernière de domaine et les polices de travail sur les FF. D'autre part, si j'utilise toujours un mot-clé à ajouter en tant que ci-dessous : en-Tête de toujours ajouter Access-Control-Allow-Origin "example1.com" en-Tête de toujours ajouter Access-Control-Allow-Origin "example2.com" en-Tête de toujours ajouter Access-Control-Allow-Origin: "example3.com" Ensuite, les polices ne fonctionne pas sur FF.
- salut les experts - Pouvez-vous svp me guider sur ce point?
- Stack Overflow est un site pour la programmation et les questions de développement. Cette question semble être hors-sujet, car il n'est pas sur la programmation ou le développement. Voir Quels sont les sujets que pouvez-vous nous parler ici dans le Centre d'Aide. Peut-être Web Applications de la Pile d'Échange, Webmaster Stack Exchange ou Unix & Linux Stack Exchange serait un meilleur endroit pour demander cela.
Vous devez vous connecter pour publier un commentaire.
Pour les 3 domaines, dans votre .htaccess:
J'ai essayé et ça fonctionne pour moi. Laissez-moi savoir si ce n'est pas pour vous.
Vary: Origin
l'en-tête doit être réglé (voir stackoverflow.com/questions/25329405/...)$0
, pas$0$1
.$0$1
ajoute le correspondant de groupe 1 à l'URL. C'est la mise en correspondance du groupe 1:http(s)?
Donc il va ajouters
pour https origines etundefined
pour http origines.(http(s)?://(myapp(api)?\-(dev|demo)\.azurewebsites\.net|localhost|localhost:4444)).*$
, qui accepte plusieurs hôtes/url mais au lieu que le protocole et serveur dans$1
.Si je ne suis malentendu le manuel, il convient de:
Le manuel indique que le
set
etadd
actions se comportent de la manière suivante:ensemble: "L'en-tête de réponse est fixé à la place du précédent-tête avec ce nom"
ajouter: "...Cela peut aboutir à deux (ou plus) des en-têtes du même nom. Cela peut conduire à des conséquences imprévues..."
append... This is the HTTP standard way of giving a header multiple values.
Restreindre l'accès à certaines Uri checkout ces docs:
CrossOriginRequestSecurity
Côté Serveur De Contrôle D'Accès#Apache_examples
Une astuce utile est d'utiliser une réécriture Apache, variable d'environnement, et les en-têtes d'appliquer Access-Control-Allow-* pour certaines Uri. Ceci est utile, par exemple, pour limiter la croix-origine des demandes pour OBTENIR /api(.*).json demandes, sans informations d'identification:
Aussi, en général, selon W3 Wiki - SCRO Activé#For_Apache
Pour exposer l'en-tête, vous pouvez ajouter la ligne suivante à l'intérieur de Répertoire, de l'Emplacement, et les Fichiers de sections, ou à l'intérieur d'un .fichier htaccess.
ET, vous pouvez utiliser l'option ajouter plutôt que de les définir, mais sachez que pouvez ajouter l'en-tête plusieurs fois, de sorte qu'il est généralement plus sûr d'utiliser.
Essayer celui-ci, ça fonctionne pour moi.
Postulez .htaccess:
Access-Control-Allow-Origin: http://localhost:3000, *
Pour Apache 2.4, j'ai utilisé la commande SET pour le serveur web Apache pour définir l'en-Tête de façon dynamique.
AJOUTER une commande ne fonctionne pas pour moi.
Cela fonctionne pour moi en ASP Classique: