Ich versuche, die gemeinsame Nutzung von Cross-Origin-Ressourcen auf meiner ASP.NET Core-Web-API zu aktivieren, stecke jedoch fest.
Das EnableCors
Attribut akzeptiert policyName
vom Typ string
als Parameter:
// 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);
Was bedeutet das policyName
und wie kann ich CORS auf einer ASP.NET Core-Web-API konfigurieren ?
c#
asp.net-core
Oluwafemi
quelle
quelle
Antworten:
Sie müssen beim Start der Anwendung eine CORS-Richtlinie in der folgenden
ConfigureServices
Methode konfigurieren :Mit dem
CorsPolicyBuilder
Inbuilder
können Sie die Richtlinie gemäß Ihren Anforderungen konfigurieren. Mit diesem Namen können Sie die Richtlinie jetzt auf Controller und Aktionen anwenden:Oder wenden Sie es auf jede Anfrage an:
quelle
UseCors
Erweiterungsmethode zu Ihrer Anforderungspipeline hinzu . Beachten Sie, dass die CORS-Middleware vor allen definierten Endpunkten in Ihrer App stehen muss, die Ursprungsübergreifende Anforderungen unterstützen möchten (z vor jedem Anruf beiUseMvc
). "Gilt für .NET Core 1 und .Net Core 2 (weiter unten)
Bei Verwendung
.Net-Core 1.1
Leider sind die Dokumente in diesem speziellen Fall sehr verwirrend. Also mache ich es ganz einfach:
Microsoft.AspNetCore.Cors
Sie Ihrem Projekt ein Nuget-Paket hinzuConfigureServices
method hinzuservices.AddCors();
Fügen Sie in
Configure
method vor dem Aufruf vonapp.UseMvc()
undapp.UseStaticFiles()
Folgendes hinzu:Das ist es. Jeder Client hat Zugriff auf Ihre ASP.NET Core-Website / API.
Bei Verwendung
.Net-Core 2.0
Microsoft.AspNetCore.Cors
Sie Ihrem Projekt ein Nuget-Paket hinzuConfigureServices
Fügen Sie in method vor dem Aufrufservices.AddMvc()
Folgendes hinzu:(Wichtig) Fügen Sie in der
Configure
Methode vor dem Aufrufapp.UseMvc()
add hinzuapp.UseCors("AllowAll");
AllowAll
ist der Richtlinienname, den wir in app.UserCors erwähnen müssen. Es könnte jeder Name sein.quelle
.UseCors()
vor.UseMvc()
Basierend auf Henks Antwort konnte ich die spezifische Domäne, die Methode, die ich zulassen möchte, und auch den Header, für den ich CORS aktivieren möchte, finden:
Verwendung:
quelle
To critique or request clarification from an author
Ich glaube nicht, dass dies hier der Fall ist, und Henks Antwort wurde bereits markiert. Meine Antwort war ein Add-On, wenn Sie bestimmte Domains zulassen möchten.ConfigureCors
das geändert wurdeAddCors
.Speziell in Dotnet Core 2.2 mit SignalR müssen Sie ändern
.WithOrigins("http://localhost:3000")
oder.SetIsOriginAllowed(isOriginAllowed: _ => true) //for all origins
stattdessen
.AllowAnyOrigin()
mit.AllowCredentials()
https://trailheadtechnology.com/breaking-change-in-aspnetcore-2-2-for-signalr-and-cors/
https://github.com/aspnet/AspNetCore/issues/4483
quelle
Wenn Sie auf IIS hosten, ist ein möglicher Grund, dass Sie dies erhalten, weil IIS das
OPTIONS
Verb blockiert . Aus diesem Grund habe ich fast eine Stunde verbracht:Ein verräterischer Hinweis ist, dass Sie
404
während derOPTIONS
Anfrage einen Fehler erhalten .Um dies zu beheben, müssen Sie IIS ausdrücklich anweisen , die Anforderung nicht zu blockieren
OPTIONS
.Gehen Sie zu Anforderungsfilterung:
Stellen Sie sicher, dass OPTIONEN zulässig sind:
Oder erstellen Sie einfach eine
web.config
mit der folgenden Einstellung:quelle
quelle
`
`
quelle
Habe dies mit .Net Core 3.1 wie folgt funktioniert
1. Stellen Sie sicher, dass Sie den UseCors-Code zwischen app.UseRouting () platzieren. und app.UseAuthentication ();
2. Platzieren Sie diesen Code dann in der ConfigureServices-Methode
3.Und über dem Basis-Controller habe ich dies platziert
Jetzt erben alle meine Controller vom BaseController und haben CORS aktiviert
quelle
place the UseCors code between app.UseRouting(); and app.UseAuthentication();
Schritt 1: Wir benötigen das Microsoft.AspNetCore.Cors-Paket in unserem Projekt. Zur Installation gehen Sie zu Tools -> NuGet Package Manager -> NuGet Packages for Solution verwalten. Suchen Sie nach Microsoft.AspNetCore.Cors und installieren Sie das Paket.
Schritt 2: Wir müssen CORS in den Behälter injizieren, damit er von der Anwendung verwendet werden kann. Wechseln Sie in der Klasse Startup.cs zur ConfigureServices-Methode und registrieren Sie CORS.
Gehen Sie in unserer Server-App zu Controller -> HomeController.cs und fügen Sie den EnableCors-Dekorator zur Indexmethode hinzu (oder zu Ihrem spezifischen Controller und Ihrer Aktion):
Für mehr Details klicken Sie hier
quelle
Alle oben genannten Problemumgehungen funktionieren möglicherweise oder funktionieren möglicherweise nicht. In den meisten Fällen funktioniert dies nicht. Ich habe hier die Lösung gegeben
Derzeit arbeite ich an Angular und Web API (.net Core) und bin auf das unten erläuterte CORS-Problem gestoßen
Die oben angegebene Lösung funktioniert immer. Bei der Anforderung 'OPTIONEN' ist es wirklich erforderlich, die 'Anonyme Authentifizierung' zu aktivieren. Mit der hier genannten Lösung müssen Sie nicht alle oben genannten Schritte ausführen, wie z. B. die IIS-Einstellungen.
Wie auch immer, jemand hat meinen obigen Beitrag als Duplikat mit diesem Beitrag markiert, aber ich kann sehen, dass dieser Beitrag nur CORS in ASP.net Core aktiviert, aber mein Beitrag bezieht sich auf das Aktivieren und Implementieren von CORS in ASP.net Core und Angular.
quelle