答案:.net Core通过CORS中间件解决跨域问题,需在Program.cs中配置策略,如AllowAnyOrigin或指定源,UseCors置于UseRouting后、UseAuthorization前,可全局或在控制器上应用策略,支持多域名和凭据传递,预检请求自动处理,生产环境应避免宽松策略以保障安全。

.NET Core Web API 处理跨域(CORS)问题,主要通过内置的 CORS 中间件来实现。只要在请求来源的域名、协议或端口与 API 所在地址不一致时,浏览器就会触发跨域限制。要解决这个问题,需要在服务端正确配置 CORS 策略。
启用 CORS 中间件
在 .NET Core 项目中,CORS 功能需要显式启用。需在 Program.cs 文件中添加相关配置:
builder.Services.AddCors(options =>
{
options.AddPolicy(“AllowAll”, policy =>
{
policy.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});
注意:UseCors 必须放在 UseRouting 之后、UseAuthorization 之前,否则策略不会生效。
精细控制跨域策略
生产环境中不建议使用 AllowAnyOrigin,应明确指定允许的源:
builder.Services.AddCors(options =>
{
options.AddPolicy(“SpecificOrigin”, policy =>
{
policy.WithOrigins(“https://yourfrontend.com”)
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials(); // 若需携带 cookie 或 Authorization Header
});
});
支持多个前端域名可使用 WithOrigins 添加多个地址。
在控制器或 Action 上应用策略
[EnableCors(“SpecificOrigin”)]
public class WeatherController : ControllerBase
{
[HttpGet]
public IActionResult Get() => Ok(new { message = “Hello” });
}
也可用 [DisableCors] 关闭某个 Action 的跨域支持。
处理预检请求(Preflight)
浏览器对非简单请求会先发送 OPTIONS 预检请求。.NET Core 自动处理 OPTIONS 请求,只要策略配置正确,无需额外代码。确保服务器返回 access-Control-Allow-Origin、Access-Control-Allow-Methods 等头部。
若使用了 AllowCredentials,前端请求需设置 withCredentials = true,同时后端不能使用 AllowAnyOrigin,必须指定具体域名。
基本上就这些。合理配置策略既能解决跨域问题,又能保证安全性。开发阶段可用宽松策略,上线前务必收紧权限。