Dans mon web.config, je voudrais spécifier plus d'un domaine pour la access-control-allow-origin
directive. Je ne veux pas utiliser *
. J'ai essayé cette syntaxe:
<add name="Access-Control-Allow-Origin" value="http://localhost:1506, http://localhost:1502" />
celui-là
<add name="Access-Control-Allow-Origin" value="http://localhost:1506 http://localhost:1502" />
celui-là
<add name="Access-Control-Allow-Origin" value="http://localhost:1506; http://localhost:1502" />
et celui-là
<add name="Access-Control-Allow-Origin" value="http://localhost:1506" />
<add name="Access-Control-Allow-Origin" value="http://localhost:1502" />
mais aucun d'eux ne fonctionne. Quelle est la syntaxe correcte?
*
valeur qui permet à n'importe quelle origine d'accéder à la ressource. Cependant, la question d'origine portait sur la mise en liste blanche d'un ensemble de domaines.Pour IIS 7.5+ et Rewrite 2.0, vous pouvez utiliser:
Explication de la
RESPONSE_Access_Control_Allow_Origin
partie variable du serveur :Dans Rewrite, vous pouvez utiliser n'importe quelle chaîne après
RESPONSE_
et cela créera l'en-tête de réponse en utilisant le reste du mot comme nom d'en-tête (dans ce cas Access-Control-Allow-Origin). La réécriture utilise des traits de soulignement "_" au lieu des tirets "-" (la réécriture les convertit en tirets)Explication de la variable serveur
HTTP_ORIGIN
:De même, dans Rewrite, vous pouvez récupérer n'importe quel en-tête de demande en utilisant
HTTP_
comme préfixe. Mêmes règles avec les tirets (utilisez des traits de soulignement "_" au lieu des tirets "-").la source
(http(s)?:\/\/((.+\.)?(domain1|domain2)\.(com|org|net)))
. De cette façon, vous pouvez ajouter d'autres domaines assez facilement et prendre en charge plusieurs domaines de premier niveau (par exemple com, org, net, etc.).Dans Web.API, cet attribut peut être ajouté en utilisant
Microsoft.AspNet.WebApi.Cors
comme détaillé à http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-apiDans MVC, vous pouvez créer un attribut de filtre pour effectuer ce travail à votre place:
Ensuite, activez-le pour des actions / contrôleurs spécifiques:
Ou ajoutez-le pour tous les contrôleurs dans Global.asax.cs
la source
Après avoir lu chaque réponse et les avoir essayées, aucune d'elles ne m'a aidé. Ce que j'ai trouvé en cherchant ailleurs, c'est que vous pouvez créer un attribut personnalisé que vous pouvez ensuite ajouter à votre contrôleur. Il écrase ceux EnableCors et y ajoute les domaines en liste blanche.
Cette solution fonctionne bien car elle vous permet d'avoir les domaines en liste blanche dans le webconfig (appsettings) au lieu de les coder dans l'attribut EnableCors sur votre contrôleur.
J'ai trouvé ce guide en ligne et cela a fonctionné comme un charme:
http://jnye.co/Posts/2032/dynamic-cors-origins-from-appsettings-using-web-api-2-2-cross-origin-support
Je pensais que je laisserais ça ici pour toute personne dans le besoin.
la source
J'ai réussi à résoudre ce problème dans le code de traitement des demandes en suivant les conseils de «monsur».
la source
Pour IIS 7.5+, vous pouvez utiliser le module IIS CORS: https://www.iis.net/downloads/microsoft/iis-cors-module
Votre web.config devrait ressembler à ceci:
Vous pouvez trouver la référence de configuration ici: https://docs.microsoft.com/en-us/iis/extensions/cors-module/cors-module-configuration-reference
la source
Regardez dans la bibliothèque Thinktecture IdentityModel - elle prend entièrement en charge CORS:
http://brockallen.com/2012/06/28/cors-support-in-webapi-mvc-and-iis-with-thinktecture-identitymodel/
Et il peut émettre de manière dynamique l'ACA-Origin que vous souhaitez.
la source
Vous pouvez ajouter ce code à votre projet webapi asp.net
dans le fichier Global.asax
la source
Vous pouvez utiliser le middleware owin pour définir une stratégie cors dans laquelle vous pouvez définir plusieurs origines cors
la source
Tu a juste besoins:
<add name="Access-Control-Allow-Origin" value="*" />
de votre web.config.ensuite, ajoutez ceci dans la
Application_BeginRequest
méthode de Global.asax:J'espère que cette aide. cela fonctionne pour moi.
la source