Chciałbym włączyć CORS na API zbudowany z ASP.NET Core MVC, ale wszystkie bieżące dokumenty odnoszą się do wcześniejszych wersji tej struktury .Jak włączyć żądania krzyżowe (CORS) w ASP.NET Core MVC
Odpowiedz
Notatki na temat nowych funkcji Corsa są bardzo lekkie, ale udało mi się sprawić, by działało w moim rozwiązaniu, patrząc na nowe klasy i metody. Mój Web API startup.cs wygląda tak. Możesz zobaczyć, jak możesz skonstruować swoje pochodzenie i zasady, używając nowej klasy CorsPolicy
. I włączanie CORS metodami AddCors
i UseCors
.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
//Add Cors support to the service
services.AddCors();
var policy = new Microsoft.AspNet.Cors.Core.CorsPolicy();
policy.Headers.Add("*");
policy.Methods.Add("*");
policy.Origins.Add("*");
policy.SupportsCredentials = true;
services.ConfigureCors(x=>x.AddPolicy("mypolicy", policy));
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// Configure the HTTP request pipeline.
app.UseStaticFiles();
//Use the new policy globally
app.UseCors("mypolicy");
// Add MVC to the request pipeline.
app.UseMvc();
}
Można również odwołać się do polityki w kontrolerach z nowymi atrybutami jak tak
[EnableCors("mypolicy")]
[Route("api/[controller]")]
Po prostu notka, musiałem dodać 'Microsoft.AspNet.Cors' do mój project.json, aby to działało, a dokładniej 'app.UseCors (" mypolicy ");' linia zgłosiła błąd do momentu dodania tego pakietu. W moim przypadku użyłem wersji '1.0.0-beta6' (dostępna jest również wersja ostateczna' 5.2.3'). Ponadto ważne jest, aby dodać 'using Microsoft.AspNet.Builder;' do 'Startup.cs', jeśli jeszcze go tam nie ma. – Gertsen
Proszę spojrzeć tutaj dla vNext i MVC6: https://neelbhatt40.wordpress.com/2015/09/10/what-is-cors-and-how-to-enable-it-in-asp-net-5vnext/ – Neel
Po prostu wiadomość dla ludzi ... to nie działało dla mnie, dopóki nie zorientowałem się, że muszę umieścić UseCors przed linią UseMvc. – Michael
Wsparcie dla CORS jest obecnie w fazie rozwoju. Następujący problem śledzenia że: https://github.com/aspnet/Mvc/issues/498
Update (28.03.2015):
Funkcja ta została sprawdzona i powinny być dostępne w następnym wydaniu.
Proszę spojrzeć tutaj dla vNext i MVC6: https: //neelbhatt40.wordpress .com/2015/09/10/what-is-cors-and-how-to-enable-it-in-asp-net-5vnext/ – Neel
mam to działa stosując następujący kod:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddCors(options => options.AddPolicy("AllowAll", p => p.AllowAnyOrigin()));
}
Można łańcuch AllowAnyHeader()
i/lub AllowAnyMethod()
do działania konfiguracyjnego, jeśli to konieczne.
Aby skonfigurować go do pełnej aplikacji:
public void Configure(IApplicationBuilder app)
{
app.UseCors("AllowAll");
}
Lub po prostu dla kontrolera:
[EnableCors("AllowAll")]
public class HomeController : Controller
{
// ...
}
-
Aktualizacja: konfigurowanie Cors dla wszystkich wniosków może zrobić nieco łatwiej:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddCors();
}
public void Configure(IApplicationBuilder app)
{
app.UseCors(builder =>
{
builder.WithOrigins("http://some.origin.com")
.WithMethods("GET", "POST")
.AllowAnyHeader();
});
}
Aby uzyskać więcej informacji, zapoznaj się z docs.
cs1929 metoda services.ConfigureCors (...) już nie istnieje. Jest on łączony z AddCors:
services.AddCors(options =>
options.AddPolicy("AllowAllOrigins", builder => builder.AllowAnyOrigin()));
W najnowszym RC2
ASP.NET Core.
Nuget są
"Microsoft.AspNetCore.Owin": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Cors": "1.0.0-rc2-final",
W Startup.cs
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddCors();
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
app.UseCors(builder => builder
.AllowAnyOrigin());
app.UseMvc();
}
Jeśli przeglądarka korzysta z żądania przed lotem (https://docs.asp.net/en/latest/security/cors.html#preflight-requests), musisz także ustawić dozwolone nagłówki i metody: 'app.UseCors (_ => _.AllowAnyOrigin(). AllowAnyHeader(). AllowAnyMethod()) ' –
Instalacja: Microsoft.AspNetCore.Cors
w metodzie Konfiguracja:
app.UseCors(builder =>
builder.WithOrigins("http://some.origin.com"));
Jak chodzi? http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api – lcryder
Dokumentacja w "nowych" dokumentach tutaj: http: //docs.asp. net/pl/latest/security/cors.html i http://mvc.readthedocs.org/en/latest/security/cors-policy.html – Daniel
Proszę zajrzeć tutaj: https: //neelbhatt40.wordpress. com/2015/09/10/what-is-cors-and-how-to-enable-it-in-asp-net-5vnext/ – Neel