在现代 Web 开发中,前后端分离架构非常流行。前端(如 Vue、React)通常运行在不同的端口或域名下,而后端使用 ASP.NET Core 提供 API 接口。这时就会遇到浏览器的同源策略限制——即跨域(Cross-Origin Resource Sharing, CORS)问题。
本文将详细讲解如何在 ASP.NET Core 项目中正确配置 CORS,让你的 Web API 能安全地被其他域名调用。无论你是刚入门的新手还是有一定经验的开发者,都能轻松掌握!
CORS(跨域资源共享)是一种由浏览器实施的安全机制,用于控制一个源(origin)的网页能否访问另一个源的资源。例如,你的前端运行在 http://localhost:3000,而后端 API 在 http://localhost:5000,这就构成了跨域。
如果不配置 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.
打开你的 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:3000 和 https://yourdomain.com 的请求,并允许任意 HTTP 头和方法(GET、POST 等)。
在 app 构建管道中,添加 CORS 中间件。注意:它必须放在 app.UseRouting() 之后、app.UseAuthorization() 之前(如果存在):
app.UseRouting();app.UseCors("MyPolicy"); // 使用上面定义的策略app.UseAuthentication();app.UseAuthorization();app.MapControllers(); 如果你只想对特定的控制器或方法启用 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 可以安全地被指定的前端应用调用,解决了跨域请求问题。
记住关键三点:
Program.cs 中注册 CORS 服务并定义策略希望这篇关于 ASP.NET Core跨域配置 的教程对你有帮助!如果你正在学习 .NET Core开发,不妨动手实践一下,加深理解。
相关 SEO 关键词:ASP.NET Core跨域配置、CORS设置教程、Web API跨域请求、.NET Core开发。
本文由主机测评网于2025-12-15发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025128213.html