Konfigurieren cors, damit alle subdomains verwenden ASP.NET Kern (Asp.net 5, MVC6, VNext)
Ich habe cors-setup richtig ein ASP.NET Kern-web-app. Im mit Sie das folgende Paket...
"Microsoft.AspNet.Cors": "6.0.0-rc1-final"
und hier ist der Start.cs-snippet...
public virtual IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddCors
(
options =>
{
options.AddPolicy
(
CORSDefaults.PolicyName,
builder =>
{
//From config...
var allowedDomains = new []{"http://aaa.somewhere.com","https://aaa.somewhere.com","http://bbb.somewhere.com","https://bbb.somewhere.com"};
//Load it
builder
.WithOrigins(allowedDomains)
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
}
);
}
);
}
Dies funktioniert gut, außer, dass die Liste der subdomains zu ermöglichen, ist schnell gewachsen, und ich möchte, dass alle subdomains von "somewhere.com". So etwas wie "*.somewhere.com". Ich kann nicht scheinen zu finden, keine Dokumentation, wie dies zu tun in der neuen ASP.NET Kern (MVC6, ASP.NET5, VNext). Alle docs/Beispiele, die ich zu finden bin, die zeigen, wie dies zu tun sind die für frühere Versionen von MVC oder WebApi. Wie kann ich erreichen, das in den neuen stack?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese wurde jetzt umgesetzt in version 2.0.0. In Ihrem
ConfigureServices
verwenden Sie die folgenden:Auch, vergessen Sie nicht, rufen UseCors in Ihrem
Configure
auch anrufen:Ich einen pull-request eingereicht der ASP.NET team mit dieser änderung wird es ja hoffentlich in den nuget-Paket. Bis dann, ich diese Problemumgehung verwenden.
Unter Ihnen registrieren, cors, wie gewöhnlich, mit der Ausnahme, dass eine Registrierung der WildCardCorsService Klasse in den di-container.
Speichern Sie diese Klasse lokal in Ihrer Lösung. Es ist eine Kopie und Bearbeiten von Microsoft.AspNet.Cors.CorsService.cs-Klasse zu erlauben, es zu handhaben wildcard-subdomains. Wenn es feststellt, dass ein wildcard-Zeichen " * " es wird überprüft, ob der root-Domäne entspricht, für die erlaubten Herkunft und Ursprung. Es unterstützt NICHT die teilweise Verwendung von Platzhaltern.
Genießen!
CorsPolicyBuilder
jetzt habenSetIsOriginAllowedToAllowWildcardSubdomains
, aber es gibt auchSetIsOriginAllowed
nimmt, dass ein lambda-Ausdruck.Den out-of-the-box
CorsService
verwendetpolicy.Origins.Contains(origin)
für die Auswertung einer Anfrage. Also, es sieht nicht wie es ist eine einfache Möglichkeit, das zu tun, was Sie verlangen, weil dieList
muss die Herkunft. Sie könnten setzen Sie Ihre eigeneICorsService
, Erben, was die out-of-the-boxCorsService
bereits bietet, und verändern Sie die Methoden zur Verarbeitung der*.mydomain.com
wildcard.Bearbeiten Hier ist, was ich erreicht
yo aspnet
zu generieren1.0.0-rc1-update2
Web-Api-Projekt. Es funktioniert. Registrieren Sie Ihren service starten.cs (sieheCorsServiceCollectionExtensions
für details).Hier ist der service, warten auf Ihre Umsetzung. Sie können kopieren/einfügen oder Erben von
CorsService
.