J'essaie d'activer le partage de ressources d'origine croisée sur mon API Web ASP.NET Core, mais je suis bloqué.
L' EnableCors
attribut accepte le policyName
type string
comme paramètre:
// Summary:
// Creates a new instance of the Microsoft.AspNetCore.Cors.Core.EnableCorsAttribute.
//
// Parameters:
// policyName:
// The name of the policy to be applied.
public EnableCorsAttribute(string policyName);
Qu'est-ce que cela policyName
signifie et comment puis-je configurer CORS sur une API Web ASP.NET Core?
c#
asp.net-core
Oluwafemi
la source
la source
Réponses:
Vous devez configurer une stratégie CORS au démarrage de l'application dans la
ConfigureServices
méthode:Le
CorsPolicyBuilder
inbuilder
vous permet de configurer la politique selon vos besoins. Vous pouvez maintenant utiliser ce nom pour appliquer la stratégie aux contrôleurs et aux actions:Ou appliquez-le à chaque demande:
la source
UseCors
méthode d'extension. Notez que le middleware CORS doit précéder tous les points de terminaison définis dans votre application pour lesquels vous souhaitez prendre en charge les requêtes cross-origin (ex . avant tout appel àUseMvc
). "S'applique à .NET Core 1 et .Net Core 2 (plus bas)
Si vous utilisez
.Net-Core 1.1
Malheureusement, les documents sont très déroutants dans ce cas précis. Je vais donc faire simple:
Microsoft.AspNetCore.Cors
un package nuget à votre projetConfigureServices
méthode, ajoutezservices.AddCors();
Dans
Configure
method, avant d'appelerapp.UseMvc()
etapp.UseStaticFiles()
, ajoutez:C'est tout. Chaque client a accès à votre site Web / API ASP.NET Core.
Si vous utilisez
.Net-Core 2.0
Microsoft.AspNetCore.Cors
un package nuget à votre projetdans la
ConfigureServices
méthode, avant d' appelerservices.AddMvc()
, ajoutez:(Important) Dans la
Configure
méthode, avant d' appelerapp.UseMvc()
, ajoutezapp.UseCors("AllowAll");
AllowAll
est le nom de la stratégie que nous devons mentionner dans app.UserCors. Cela peut être n'importe quel nom.la source
.UseCors()
avant.UseMvc()
Sur la base de la réponse de Henk, j'ai pu trouver le domaine spécifique, la méthode que je veux autoriser et aussi l'en-tête pour lequel je veux activer CORS:
usage:
la source
To critique or request clarification from an author
Je ne pense pas que ce soit le cas ici et la réponse de Henk a déjà été marquée. Ma réponse était un complément si vous souhaitez autoriser des domaines spécifiques.ConfigureCors
c'était changé enAddCors
.Plus précisément dans dotnet core 2.2 avec SignalR, vous devez changer
.WithOrigins("http://localhost:3000")
ou.SetIsOriginAllowed(isOriginAllowed: _ => true) //for all origins
à la place
.AllowAnyOrigin()
avec.AllowCredentials()
https://trailheadtechnology.com/breaking-change-in-aspnetcore-2-2-for-signalr-and-cors/
https://github.com/aspnet/AspNetCore/issues/4483
la source
Si vous hébergez sur IIS, l'une des raisons possibles est que vous obtenez cela, car IIS bloque le
OPTIONS
verbe. J'ai passé près d'une heure à cause de ça:Une indication révélatrice est que vous obtenez une
404
erreur lors de laOPTIONS
demande.Pour résoudre ce problème, vous devez indiquer explicitement à IIS de ne pas bloquer la
OPTIONS
demande.Accédez au filtrage des demandes:
Assurez-vous que OPTIONS est autorisé:
Ou créez simplement un
web.config
avec le paramètre suivant:la source
la source
»
»
la source
Cela fonctionne avec .Net Core 3.1 comme suit
1.Assurez-vous de placer le code UseCors entre app.UseRouting (); et app.UseAuthentication ();
2.Puis placez ce code dans la méthode ConfigureServices
3.Et au-dessus du contrôleur de base, j'ai placé ceci
Maintenant, tous mes contrôleurs hériteront du BaseController et auront CORS activé
la source
place the UseCors code between app.UseRouting(); and app.UseAuthentication();
Étape 1: Nous avons besoin du package Microsoft.AspNetCore.Cors dans notre projet. Pour l'installation, accédez à Outils -> Gestionnaire de packages NuGet -> Gérer les packages NuGet pour la solution. Recherchez Microsoft.AspNetCore.Cors et installez le package.
Étape 2: Nous devons injecter CORS dans le conteneur afin qu'il puisse être utilisé par l'application. Dans la classe Startup.cs, passons à la méthode ConfigureServices et enregistrons CORS.
Donc, dans notre application serveur, allons dans Controllers -> HomeController.cs et ajoutez le décorateur EnableCors à la méthode Index (Ou votre contrôleur et action spécifiques):
Pour plus de détails, cliquez ici
la source
Toutes les solutions de contournement mentionnées ci-dessus peuvent fonctionner ou peuvent ne pas fonctionner, dans la plupart des cas, cela ne fonctionnera pas. J'ai donné la solution ici
Actuellement, je travaille sur l'API angulaire et Web (.net Core) et j'ai rencontré un problème CORS expliqué ci-dessous
La solution fournie ci-dessus fonctionnera toujours. Avec la requête 'OPTIONS', il est vraiment nécessaire d'activer 'Authentification anonyme'. Avec la solution mentionnée ici, vous n'avez pas à suivre toutes les étapes mentionnées ci-dessus, comme les paramètres IIS.
Quoi qu'il en soit, quelqu'un a marqué mon message ci-dessus comme étant en double avec ce message, mais je peux voir que ce message est uniquement destiné à activer CORS dans ASP.net Core, mais mon message est lié à l'activation et à la mise en œuvre de CORS dans ASP.net Core et Angular.
la source