Aktivieren Sie die OPTIONEN header für CORS .NET-Core-Web-API
Löste ich dieses problem nach nicht finden, die Lösung auf Stackoverflow, also Teile ich mein problem hier und die Lösung in eine Antwort.
Nach der Aktivierung eine cross-domain-policy in meine .NET-Core-Web-Api-Anwendung mit AddCors, es funktioniert immer noch nicht aus dem Browser. Dies ist, weil Browsern, einschließlich Chrome und Firefox, zuerst senden Sie eine OPTIONS-Anfrage und meine Anwendung antwortet nur mit 204 No Content.
Was ist ein konkretes Szenario, wo dies nicht gelingt? Wenn es "es scheitert die ganze Zeit irgendwelche chrome/ff browser zu tun CORS" dann ist, wie dieser nicht bereits erfasst sind, durch den Rahmen? Scheint so, dass wäre eine ziemlich große Lücke.
Ich bin damit einverstanden. Aber das ist, wie es ist. Den Rahmen können Sie tun, CORS mit built-in-features, aber es behandelt nicht die OPTIONEN Aufrufe und dies ist eine Voraussetzung für die normale Nutzung von cross-domain-api-Aufrufe von Browsern. Jedoch, Sie können es vermeiden, indem ein einfacher Anruf, wie die Einstellung Typ auf text/plain und ein paar andere Dinge. Dann wird der browser nicht die MÖGLICHKEITEN der Anruf zuerst.
Ich bin damit einverstanden. Aber das ist, wie es ist. Den Rahmen können Sie tun, CORS mit built-in-features, aber es behandelt nicht die OPTIONEN Aufrufe und dies ist eine Voraussetzung für die normale Nutzung von cross-domain-api-Aufrufe von Browsern. Jedoch, Sie können es vermeiden, indem ein einfacher Anruf, wie die Einstellung Typ auf text/plain und ein paar andere Dinge. Dann wird der browser nicht die MÖGLICHKEITEN der Anruf zuerst.
InformationsquelleAutor Niels Brinch | 2017-02-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen einer middleware-Klasse, um Ihr Projekt zu behandeln, die OPTIONEN verb.
Dann fügen Sie
app.UseOptions();
dieses als erste Zeile in der Startup.cs in der Configure Methode.Ich weiß es nicht. Zu beheben, würde ich Fiddler öffnen und überprüfen Sie die details der Anforderung und Antwort.
+1, aber eine Sache, die angepasst werden müssen, rufen Sie nicht _next.Aufrufen, wenn die Methode ist Optionen, die Anfrage sollte nach dem Aufruf
context.Response.WriteAsync("OK");
, so ändernInvoke
Umsetzung:if (context.Request.Method != "OPTIONS") { await this._next.Invoke(context); }
Es ist nicht sicher. Warum gehst du nicht zu konfigurieren CORS richtig anstelle?
Dies hat hervorragend funktioniert, für unsere Winkel-6-frontend mit ein .NET-Core-backend. Dies zusammen mit der "AddCors", dass der folgende: AllowAnyOrigin, AllowAnyMethod, AllowAnyHeader, Und AllowCredentials funktioniert Prima. Unsere API ist nun komplett öffentlich. Wir hatte, um die X-Auth-header, um die OPTIONEN middleware, aber das ist, weil wir uns mit X-Auth von unseren Kunden auf unsere backend.
InformationsquelleAutor Niels Brinch
Ich weiß, es beantwortet wurde. Nur die Antwort mit den aktualisierten Informationen. So würde es auch anderen helfen.
Seine nun seine eingebaute in asp.net core framework.
Folgen Sie einfach https://docs.microsoft.com/en-us/aspnet/core/security/cors
und ersetzen
mit
fyi: Wenn Sie nicht zulassen möchten, dass alle - header oder Methode, die Sie verwenden können, die Methoden
WithHeaders
/WithMethods
dadurch bekomme ich
204 No Content
im response-status-codeInformationsquelleAutor Jeyara