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.

AWS Elastic Beanstalk: La configuración de ASP.NET Cors no permite hosts.

Estoy tratando de permitir solicitudes desde un origen en una API. Hasta ahora, nada está pasando, por lo que permitir cualquier origen es el objetivo en este momento y puedo restringir el acceso una vez que esté funcionando.

La API está escrita en ASP.net y se implementa en Elastic Beanstalk. Cuando intento acceder a la API con cualquier front-end, obtengo el siguiente error:

El acceso a XMLHttpRequest en ‘https://api.sitio-web.com/endpoint’ desde el origen ‘http://localhost:{NUM_PUERTO}’ se ha bloqueado debido a la política de CORS: No se encuentra presente el encabezado ‘Access-Control-Allow-Origin’ en el recurso solicitado.

Configuración de CORS en Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    // ...
    services.AddCors();
    // ...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseCors(x => x
        .AllowAnyMethod()
        .AllowAnyHeader()
        .SetIsOriginAllowed(origin => true));

    app.UseHttpsRedirection();
    app.UseRouting();
    app.UseAuthentication();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

El endpoint no está configurado de ninguna manera especial:

[AllowAnonymous]
[HttpPost]
public async Task<actionresult> Create([FromBody]CreateRequest request)
{
    //...
}

¿Hay algo que me esté perdiendo?

He leído la documentación aqui: enlace y he intentado el código en este comentario.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Basado en el código proporcionado, parece que has configurado correctamente el CORS en tu API de ASP.net. Sin embargo, puede haber algunas cosas que puedes probar para resolver el problema:

    1. Asegúrate de que el middleware de CORS esté agregado en el pipeline antes de cualquier otro middleware, especialmente antes del middleware UseHttpsRedirection.
    2. Verifica que tu API esté correctamente desplegada en Elastic Beanstalk y esté ejecutándose correctamente.

    3. Comprueba si existen restricciones de red que puedan estar bloqueando las solicitudes desde el frontend hacia la API.

    4. Intenta agregar manualmente el encabezado Access-Control-Allow-Origin a la respuesta de la API y establecerlo como *. Puedes hacer esto modificando tu método de acción de la siguiente manera:

      [AllowAnonymous]
      [HttpPost]
      public async Task<ActionResult> Create([FromBody]CreateRequest request)
      {
          //...
      
          Response.Headers.Add("Access-Control-Allow-Origin", "*");
      
          return Ok(result);
      }
      

      Esto permitirá que cualquier origen acceda a la API y verificar si el CORS es la causa raíz del problema. Si esto funciona, puedes actualizar la configuración del middleware de CORS para permitir solo orígenes específicos a través del método SetIsOriginAllowed.

    Esperemos que una de estas soluciones funcione para ti y resuelva el problema de CORS con tu API.

Comments are closed.