Saltar al contenido

.NET Core UseCors() no agrega encabezados

La guía paso a paso o código que encontrarás en este artículo es la resolución más fácil y válida que encontramos a tu duda o problema.

Solución:

El problema es que cuando se usa la autenticación de Bearer (o cualquiera que me imagine), agrega un encabezado “Autorización”, y el servidor solo dará un visto bueno si la configuración permite ese encabezado.

Hay dos formas de resolver el problema, y ​​a continuación se muestra la solamente código necesario. va en el Configure() método en Startup.cs en la solución Web API.

Método 1: Permitir todos los encabezados

app.UseCors(builder => builder.WithOrigins("https://localhost:44306")
                                .AllowAnyMethod()
                                .AllowAnyHeader());

Método 2: Permitir encabezados específicos

app.UseCors(builder => builder.WithOrigins("https://localhost:44306")
                              .AllowAnyMethod()
                              .WithHeaders("authorization", "accept", "content-type", "origin"));

Los encabezados adicionales se deben a que, según la documentación:

Los navegadores no son del todo consistentes en la forma en que configuran Access-Control-Request-Headers. Si usted establecer encabezados a cualquier otra cosa que no sea “*”, debe incluir al menos “aceptar”, “tipo de contenido” y “origen”, además de cualquier encabezado personalizado que desee admitir.

El encabezado Access-Control-Allow-Origin se devuelve solo si:

  1. La solicitud incluye un encabezado “Origen”.
  2. El origen solicitado coincide con la política CORS.

Luego, el servidor devuelve el encabezado ACAO con la URL de origen como valor.

El encabezado de origen generalmente lo establece el objeto XMLHttpRequest.

Para obtener más información, consulte Cómo funciona CORS

En el archivo Startup.cs, agregue lo siguiente

public CorsPolicy GenerateCorsPolicy()
                var corsBuilder = new CorsPolicyBuilder();
                corsBuilder.AllowAnyHeader();
                corsBuilder.AllowAnyMethod();
                corsBuilder.AllowAnyOrigin(); // For anyone access.
                //corsBuilder.WithOrigins("http://localhost:56573"); // for a specific url. Don't add a forward slash on the end!
                corsBuilder.AllowCredentials();
                return corsBuilder.Build();
    

En el método ConfigureServices:

 services.AddCors(options =>
                
                    options.AddPolicy("AllowAllOrigins", GenerateCorsPolicy());
                );

// Para aplicar CORS globalmente en toda la aplicación // En el método Configure, agregue

app.UseCors("AllowAllOrigins");  

[DisableCors]

Uso de DisableCors attributepodemos deshabilitar CORS para un controlador o una acción.

// Para habilitar la base del controlador CORS: si aplica globalmente, no necesita este.

[EnableCors("AllowAllOrigins")]  
public class HomeController: Controller   

Recuerda algo, que te brindamos la opción de aclarar si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *