Konfigurieren Sie cors, um alle Subdomains mit ASP.NET Core zuzulassen (Asp.net 5, MVC6, VNext)

9

Ich habe Kors korrekt in einer ASP.NET Core-Webanwendung eingerichtet. Ich benutze das folgende Paket ...

%Vor%

und hier ist das startup.cs Snippet ...

%Vor%

Das funktioniert großartig, außer dass die Liste der zu erlaubenden Subdomains schnell wächst und ich alle Subdomains von "somewhere.com" zulassen möchte. Etwas wie "* .irgendwo.com". Ich kann scheinen, keine Dokumentation zu finden, wie man das im neuen ASP.NET Kern tut (MVC6, ASP.NET5, VNext). Alle Dokumente / Beispiele, die ich finde, zeigen, wie dies zu tun ist, für frühere Versionen von MVC oder WebApi. Wie kann ich dies im neuen Stapel erreichen?

    
sjdirect 26.04.2016, 23:34
quelle

2 Antworten

10

Ich habe eine Pull-Anforderung an das ASP.NET-Team mit dieser Änderung gesendet, damit es hoffentlich ankommt das nugget-Paket. Bis dahin nutze ich diese Problemumgehung.

Im Folgenden registrieren Sie sich wie gewohnt mit der Ausnahme, dass Sie die WildCardCorsService-Klasse im di-Container registrieren müssen.

%Vor%

Speichern Sie diese Klasse lokal in Ihrer Lösung. Es handelt sich um eine Kopie und Bearbeitung der Klasse Microsoft.AspNet.Cors.CorsService.cs, um die Behandlung von Platzhalter-Subdomänen zu ermöglichen. Wenn ein Platzhalterzeichen '*' gefunden wird, wird überprüft, ob die Stammdomäne den erlaubten Ursprüngen und dem tatsächlichen Ursprung entspricht. Es unterstützt keine teilweise Wildcard-Matching.

%Vor%

Viel Spaß!

    
sjdirect 28.04.2016, 21:30
quelle
1

Das Out-of-the-Box-Paket CorsService verwendet policy.Origins.Contains(origin) , um eine Anfrage zu bewerten. Es sieht also nicht so aus, als ob es eine triviale Möglichkeit gibt, das zu tun, was Sie benötigen, weil List den Ursprung enthalten muss. Sie könnten Ihren eigenen ICorsService , den erben, implementieren was das out-of-the-box CorsService bereits bietet, und zwicke die Methoden, um den *.mydomain.com Platzhalter zu handhaben.

Bearbeiten Das habe ich mit yo aspnet erreicht, um ein 1.0.0-rc1-update2 Web API-Projekt zu erzeugen. Es klappt. Registrieren Sie Ihren Dienst unter Startup.cs (siehe CorsServiceCollectionExtensions für Details.)

%Vor%

Hier ist der Service, der auf Ihre Implementierung wartet. Sie können entweder kopieren / einfügen oder von CorsService erben .

%Vor%     
Shaun Luttin 27.04.2016 02:07
quelle