当前位置:首页 > C# > 正文

ASP.NET Core跨域(CORS)配置详解(手把手教你解决Web API跨域请求问题)

在现代 Web 开发中,前后端分离架构非常流行。前端(如 Vue、React)通常运行在不同的端口或域名下,而后端使用 ASP.NET Core 提供 API 接口。这时就会遇到浏览器的同源策略限制——即跨域(Cross-Origin Resource Sharing, CORS)问题。

本文将详细讲解如何在 ASP.NET Core 项目中正确配置 CORS,让你的 Web API 能安全地被其他域名调用。无论你是刚入门的新手还是有一定经验的开发者,都能轻松掌握!

ASP.NET Core跨域(CORS)配置详解(手把手教你解决Web API跨域请求问题) Core跨域配置 CORS设置教程 Web API跨域请求 .NET Core开发 第1张

什么是 CORS?

CORS(跨域资源共享)是一种由浏览器实施的安全机制,用于控制一个源(origin)的网页能否访问另一个源的资源。例如,你的前端运行在 http://localhost:3000,而后端 API 在 http://localhost:5000,这就构成了跨域。

为什么需要配置 CORS?

如果不配置 CORS,浏览器会阻止前端 JavaScript 向不同源的后端发送请求(如 fetch 或 axios),即使服务器成功响应,也会被浏览器拦截,并在控制台报错:

Access to fetch at 'http://localhost:5000/api/values' from origin 'http://localhost:3000'has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header present.  

ASP.NET Core 中配置 CORS 的步骤

第 1 步:在 Program.cs 中注册 CORS 服务

打开你的 Program.cs 文件(适用于 .NET 6 及以上版本),在 builder.Services 中添加 CORS 服务:

builder.Services.AddCors(options =>{    options.AddPolicy("MyPolicy", policy =>    {        policy.WithOrigins("http://localhost:3000", "https://yourdomain.com")              .AllowAnyHeader()              .AllowAnyMethod();    });});  

这里我们定义了一个名为 "MyPolicy" 的策略,允许来自 http://localhost:3000https://yourdomain.com 的请求,并允许任意 HTTP 头和方法(GET、POST 等)。

第 2 步:启用 CORS 中间件

app 构建管道中,添加 CORS 中间件。注意:它必须放在 app.UseRouting() 之后、app.UseAuthorization() 之前(如果存在):

app.UseRouting();app.UseCors("MyPolicy"); // 使用上面定义的策略app.UseAuthentication();app.UseAuthorization();app.MapControllers();  

第 3 步(可选):在控制器或 Action 上使用特性

如果你只想对特定的控制器或方法启用 CORS,可以使用 [EnableCors] 特性:

[EnableCors("MyPolicy")][ApiController][Route("api/[controller]")]public class ValuesController : ControllerBase{    [HttpGet]    public IActionResult Get()    {        return Ok(new[] { "value1", "value2" });    }}  

常见配置选项说明

  • .WithOrigins(...):指定允许的源(协议 + 域名 + 端口)
  • .AllowAnyOrigin():允许所有源(不推荐用于生产环境)
  • .AllowAnyHeader():允许任意请求头
  • .AllowAnyMethod():允许任意 HTTP 方法
  • .AllowCredentials():允许携带 Cookie(注意:不能与 AllowAnyOrigin() 同时使用)

生产环境注意事项

在生产环境中,切勿使用 AllowAnyOrigin(),这会带来安全风险。应明确指定受信任的前端域名。

此外,确保你的 CORS 配置与 HTTPS 一致。例如,如果前端是 https://app.yoursite.com,就不要只配置 http://app.yoursite.com

总结

通过以上步骤,你已经成功在 ASP.NET Core 项目中配置了 CORS。现在你的 Web API 可以安全地被指定的前端应用调用,解决了跨域请求问题。

记住关键三点:

  1. Program.cs 中注册 CORS 服务并定义策略
  2. 在中间件管道中启用 CORS
  3. 生产环境务必限制可信源,避免安全漏洞

希望这篇关于 ASP.NET Core跨域配置 的教程对你有帮助!如果你正在学习 .NET Core开发,不妨动手实践一下,加深理解。

相关 SEO 关键词:ASP.NET Core跨域配置、CORS设置教程、Web API跨域请求、.NET Core开发。