"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo implementar el intercambio de recursos de dominio cruzado (CORS) en la API web de ASP.NET Core?

¿Cómo implementar el intercambio de recursos de dominio cruzado (CORS) en la API web de ASP.NET Core?

Publicado el 2025-04-30
Navegar:482

How to Implement Cross-Origin Resource Sharing (CORS) in ASP.NET Core Web API?

Habilitar Cors en la API web de ASP.NET Web: Guía completa

El intercambio de recursos de origen cruzado (CORS) es un mecanismo que permite a los navegadores web realizar solicitudes HTTP de origen cruzado, generalmente para dominios que son diferentes de la fuente de corriente del navegador. Habilitar CORS es fundamental para garantizar una comunicación perfecta entre las aplicaciones frontales y las API web de fondo alojadas en diferentes dominios o puertos.

enable Cors

en startup.cs

El método preferido para habilitar CORS en ASP.NET Core es a través del archivo startup.cs. En el método ConfigureServices, agregue las siguientes líneas para instalar el paquete CORS y configurar el servicio CORS:

services.AddCors();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

A continuación, en el método Configurar, configure el middleware CORS antes de llamar a App.UsemVC ():

app.UseCors(options => options.WithOrigins("http://example.com").AllowAnyMethod());

Esto permitirá cualquier solicitud de la fuente especificada (en este caso " http://example.com") para usar cualquier método http.

Configuración global cors

]

Si desea habilitar CORS a nivel mundial para todos los controladores y operaciones, puede agregar la propiedad [InkableCors] al archivo startup.cs:

[assembly: EnableCors(typeof(MyPolicy))]

puede definir mypolicy en Configurservices:

services.AddCors(options =>
{
    options.AddPolicy("MyPolicy",
        policy => policy.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
});

Esto habilitará CORS para todos los controladores y operaciones sin la necesidad de un controlador separado u configuración de nivel de operación.

agregue el encabezado personalizado

Si necesita especificar otros encabezados personalizados en la configuración de CORS, puede modificar el objeto Opciones en la instrucción App.Usecors:

app.UseCors(options => options.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()
    .WithExposedHeaders("X-My-Custom-Header"));

Esto agregará el X-My-Custom-Header a la lista de encabezados que se permite que se expongan.

método forzado agregado usando el encabezado manual

Como alternativa al uso del middleware CORS incorporado, puede agregar manualmente los encabezados requeridos a cada respuesta usando el middleware. Este método no es muy recomendable, pero puede ser útil en algunos casos, especialmente cuando se usa encabezados de autorización.

app.Use(async (context, next) =>
{
    context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
    context.Response.Headers.Add("Access-Control-Allow-Methods", "GET, POST, PUT, PATCH, DELETE");
    context.Response.Headers.Add("Access-Control-Allow-Headers", "X-PINGOTHER, Content-Type, Authorization");
    await next();
});

Este middleware agrega el encabezado especificado a todas las respuestas, habilitando efectivamente a CORS para todas las solicitudes.

en conclusión

Dependiendo de sus requisitos específicos, hay varias formas de habilitar CORS en ASP.NET Core. Después de los pasos descritos en esta guía, puede garantizar una comunicación de origen cruzado sin problemas entre aplicaciones frontales y API web de back-end, lo que permite que los datos y la funcionalidad se compartan entre los dominios.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3