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.

‘Access-Control-Allow-Origin’ en ASP.NET Core 6. ‘Access-Control-Allow-Origin’ en ASP.NET Core 6.

Probado en Postman y funciona bien. En el navegador obtengo el siguiente error:

El acceso a XMLHttpRequest en ‘http://localhost:5081/api/Accounting/GetSales’ desde el origen ‘https://localhost:44426’ ha sido bloqueado por la directiva de intercambio de recursos de origen cruzado (CORS): No se encuentra presente el encabezado ‘Access-Control-Allow-Origin’ en el recurso solicitado.

Proyecto Asp Net Core con Angular y .Net6

csharp
[DisableCors]
[HttpGet("GetSales")]
public IEnumerable<saledto> GetSales()
{
var result = _context.Sales.Select(x => new SaleDto
{
AccountName = x.Account.Name,
CategoryName = x.Category.CategoryName,
SaleDate = x.SaleDate,
SaleId = x.SaleId,
SaleValue = x.SaleValue,
});
return result;
}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que la política CORS está bloqueando el acceso al punto de conexión de API desde la aplicación del lado del cliente que se está ejecutando en un origen diferente (https://localhost:44426).

    Para resolver este problema, puedes agregar las políticas CORS requeridas para permitir el acceso desde la aplicación del lado del cliente.

    En el método ConfigureServices del archivo Startup.cs, agrega el siguiente código:

    services.AddCors(options =>
    {
        options.AddPolicy("PermitirOrigenEspecifico", builder =>
        {
            builder.WithOrigins("https://localhost:44426")
                   .AllowAnyHeader()
                   .AllowAnyMethod();
        });
    });
    

    En el método Configure, agrega el siguiente código:

    app.UseCors("PermitirOrigenEspecifico");
    

    Esto permitirá las solicitudes desde el origen especificado con cualquier método y encabezados. También puedes especificar opciones de política más específicas según tus requisitos.

    Alternativamente, también puedes habilitar CORS de forma global agregando el siguiente código al método ConfigureServices:

    services.AddCors();
    

    Y en el método Configure:

    app.UseCors(builder =>
        builder.AllowAnyOrigin()
               .AllowAnyMethod()
               .AllowAnyHeader());
    

    Sin embargo, habilitar CORS de forma global puede no ser una buena práctica de seguridad, ya que abre la API a posibles ataques desde cualquier origen. Por lo tanto, se recomienda especificar los orígenes de manera explícita según sea necesario.

Comments are closed.