Je voudrais activer CORS sur une API construite avec ASP.NET Core MVC, mais tous les documents actuels font référence à des versions antérieures de ce cadre.
Les notes sur les nouvelles fonctionnalités de Cors sont très légères, mais j'ai pu le faire fonctionner dans ma solution en regardant les nouvelles classes et méthodes. Mon API Web startup.cs ressemble à ceci. Vous pouvez voir comment vous pouvez construire vos origines et vos politiques en utilisant la nouvelle classe CorsPolicy
. Et activer CORS avec les méthodes AddCors
et 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();
}
Vous pouvez également référencer la stratégie dans les contrôleurs avec les nouveaux attributs comme ceci
[EnableCors("mypolicy")]
[Route("api/[controller]")]
Je l'ai fait fonctionner en utilisant le code suivant:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddCors(options => options.AddPolicy("AllowAll", p => p.AllowAnyOrigin()));
}
Vous pouvez chaîner AllowAnyHeader()
et/ou AllowAnyMethod()
à l'action de configuration si nécessaire.
Pour le configurer pour l'application complète:
public void Configure(IApplicationBuilder app)
{
app.UseCors("AllowAll");
}
Ou tout simplement pour un contrôleur:
[EnableCors("AllowAll")]
public class HomeController : Controller
{
// ...
}
-
Mise à jour: la configuration de CORS pour tous les demandes peuvent être faites un peu plus facilement:
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();
});
}
Pour plus d'informations, reportez-vous à docs .
Dans le dernier RC2
d'ASP.NET Core.
Les packages NuGet sont
"Microsoft.AspNetCore.Owin": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Cors": "1.0.0-rc2-final",
Dans 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();
}
cs1929 la méthode services.ConfigureCors (...) n'existe plus. Il est combiné à AddCors:
services.AddCors(options =>
options.AddPolicy("AllowAllOrigins", builder => builder.AllowAnyOrigin()));
Le support de CORS est en cours de développement. Le problème suivant suit ce qui suit: https://github.com/aspnet/Mvc/issues/498
Mise à jour (28/03/2015) :
Cette fonctionnalité a été archivée et devrait être disponible dans la prochaine version.
Installer: Microsoft.AspNetCore.Cors
Dans la méthode Configure:
app.UseCors(builder =>
builder.WithOrigins("http://some.Origin.com"));