.NET CORE 2.0 Winkel-5: Zulassen von Cors
Ich bin mit einigen Schwierigkeiten, so dass cors. Ich habe server side
etwa so:
app.UseCors(builder => builder.WithOrigins("http://localhost:4200/").AllowAnyHeader());
Innerhalb der configure
Methode der startup
Klasse
Wenn meine web-API ist der hit, es werden wieder die Daten in Ordnung.
Allerdings scheint das problem zu sein, mit Kantigen als in den ich die folgende Fehlermeldung erhalten:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access.
Hier ist mein Winkel-web-api-Aufruf
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';;
@Injectable()
export class ProfileService {
private baseUrl = 'api/profile/';
constructor(private http: HttpClient) { }
getLookups(step: number) {
return this.http.get('http://localhost:51658/' + this.baseUrl + 'lookups/' + step)
}
}
- Bekommt man keine Ausnahmen in Ihrem ASP.NET Core-Anwendung? Wenn ja, werden Sie sich bewusst, dass Ausnahmen SAUBERE von jedem CORS-Header festgelegt, die von der CORS-middleware
Du musst angemeldet sein, um einen Kommentar abzugeben.
ändern Sie Ihre line-in-API mit :
werden Sie sicher, dass Sie Hinzugefügt
Services.AddCors();
im ConfigureServices()den server stoppen und erneut ausführen, nachdem Sie änderungen vorgenommen haben.
AllowAnyCredentials
zeigt sich in rot ASP.NET Core 2.1. Ist, dass in einem anderen Paket?Geändert
builder.WithOrigins("http://localhost:4200/")
zu(Entfernt die '/')
"WithOrigins" erwartet ein array, und nicht einen string, also vielleicht ist das Ihr Fall.
Jedoch sind die Mindestanforderungen für Cors Werke in Ihrem Fall sind:
Starten.cs hinzufügen
services.AddCors();
vorservices.AddMvc();
und auch:string[] origins = new string[] { "http://localhost:4200" };
app.UseCors(b=>b.AllowAnyMethod().AllowAnyHeader().WithOrigins(origins));
Wieder hinzufügen, bevor
app.UseMvc(your routes ...)
Oder das, was Sie wirklich brauchen, spielt keine Rolle, die Technik ist das hinzufügen von ein "Access-Control-Allow-Origin" - header mit dem Wert, den Ursprung/Herkunft in der Antwort des Servers, die in .Net core 2 getan werden kann, wie dies (in einer beliebigen Methode in einer controller):
ControllerContext.HttpContext
.Response
.Headers
.Add("Access-Control-Allow-Origin","http://localhost:4200");
oder weltweit - Sie erstellen können, eine middleware, fügen Sie diese header auf allen Antworten, wenn der Ursprung übereinstimmen.
Funktioniert auch im Winkel 6 und .Net Core 2 als separate Anwendungen.
WithOrigins
erwartet eineparams string[]
- das bedeutet, dass mehrere separate string-Parameter. Eine einzelnestring
parameter ist völlig in Ordnung.Auch versuchen
AllowAnyMethod
an der Kette.WithOrigins
mitAnyOrigin
Bin servieren Winkel auf anderen port wie :4200 oder :4300 abhängig von der Anzahl der ports in Verwendung
also ich habe mein konfiguriert asp.net Kern-app in
Datei zu ermöglichen CORS von anderen Websites
bitte Lesen asp.net Kern Dokumentation