es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo habilitar CORS en un proyecto de API web ASP.NET Core 6.0?

Configuré CORS en mi proyecto de API web ASP.NET Core 6.0. Pero la solicitud previa (preflight) recibe un error http 405.

En otras palabras, no se permite HTTP OPTION. Parece que CORS no está habilitado.

He visto ejemplos con config.EnableCors(); pero no hay un App_Start/WebApiConfig.cs en esta plantilla de proyecto.

¿Qué me estoy perdiendo aquí?

Program.cs

var builder = WebApplication.CreateBuilder(args);

// Añade servicios al contenedor.

builder.Services.AddControllers();

// Obtén más información sobre cómo configurar Swagger/OpenAPI en https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var devCorsPolicy = “devCorsPolicy”;
builder.Services.AddCors(options =>
{
options.AddPolicy(devCorsPolicy, builder => {
//builder.WithOrigins(“http://localhost:800”).AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
//builder.SetIsOriginAllowed(origin => new Uri(origin).Host == “localhost”);
//builder.SetIsOriginAllowed(origin => true);
});
});

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
app.UseCors(devCorsPolicy);
}
else
{
app.UseHttpsRedirection();
app.UseAuthorization();
//app.UseCors(prodCorsPolicy);
}

app.MapControllers();

app.Run();

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que has configurado correctamente el CORS, pero es posible que te falte el middleware requerido para manejar las solicitudes OPTIONS. Puedes agregar el middleware UseCors() a la tubería de solicitudes de tu aplicación para manejar las solicitudes CORS, incluidas las solicitudes de preflight. En tu archivo Program.cs, agrega el siguiente código antes de app.MapControllers():

    app.UseCors(devCorsPolicy);
    

    Esto habilitará la política de CORS que has definido anteriormente para todas las solicitudes entrantes. Además, asegúrate de haber agregado el paquete Microsoft.AspNetCore.Cors a tu proyecto.

    Después de realizar estos cambios, la solicitud de preflight debería manejarse correctamente y debería devolver el código de respuesta HTTP esperado.

Comments are closed.