在 ASP.NET Core (WebAPI) 中启用 CORS

目录

[如何在 ASP.NET Core 中启用 CORS](#如何在 ASP.NET Core 中启用 CORS)

[为什么需要 CORS?](#为什么需要 CORS?)

[步骤 1:添加 CORS 服务](#步骤 1:添加 CORS 服务)

[步骤 2:应用 CORS 策略](#步骤 2:应用 CORS 策略)

全球

每个端点

[步骤 3:允许所有来源(可选)](#步骤 3:允许所有来源(可选))

[步骤 4:测试 CORS 设置](#步骤 4:测试 CORS 设置)

常见问题及故障排除

结论


如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

如何在 ASP.NET Core 中启用 CORS

跨域资源共享 (CORS) 是一种允许 Web 应用程序访问来自不同域的资源的机制。默认情况下,出于安全考虑,浏览器会阻止跨域 HTTP 请求。但是,您可以在 ASP.NET Core 应用程序中启用 CORS,以便在需要时允许此类请求。本文将指导您使用现代最小托管模型在 ASP.NET Core 应用程序中逐步启用 CORS。

为什么需要 CORS?

假设您有一个托管在 此处应填写服务器地址 的前端应用程序,https://frontend.example.com它试图访问托管在 此处应填写服务器地址 的 API 。https://api.example.com如果未启用 CORS,浏览器将阻止此请求,从而导致CORS 策略错误。启用 CORS 可以让您指定哪些域可以安全地访问您的 API。

步骤 1:添加 CORS 服务

第一步是将 CORS 服务添加到您的应用程序中。

  1. 打开Program.cs文件。
  2. AddCors在服务配置部分注册 CORS 服务:

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddCors(options =>

{

options.AddPolicy("AllowSpecificOrigins", builder =>

{

builder.WithOrigins("https://frontend.example.com") // Replace with your allowed origins

.AllowAnyHeader()

.AllowAnyMethod();

});

});

builder.Services.AddControllers();

var app = builder.Build();

步骤 2:应用 CORS 策略

您需要将 CORS 策略应用到您的应用程序。主要有两种方法:全局应用或针对特定端点应用。

全球

要为所有控制器启用该策略,请UseCors在请求管道配置中使用中间件:

app.UseCors("AllowSpecificOrigins"); // Apply CORS policy globally

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

每个端点

要为特定端点启用 CORS,请使用以下[EnableCors]属性:

ApiController

Route("api/\[controller\]")

public class MyController : ControllerBase

{

HttpGet

EnableCors("AllowSpecificOrigins")

public IActionResult Get()

{

return Ok("CORS is enabled for this endpoint.");

}

}

步骤 3:允许所有来源(可选)

如果要允许所有来源,可以按如下方式修改 CORS 策略:

builder.Services.AddCors(options =>

{

options.AddPolicy("AllowAll", builder =>

{

builder.AllowAnyOrigin()

.AllowAnyHeader()

.AllowAnyMethod();

});

});

然后,"AllowAll"在全局或针对特定端点应用 CORS 时,使用此策略名称。注意:允许所有来源可能会使您的 API 面临安全风险,因此请谨慎使用。

步骤 4:测试 CORS 设置

配置好 CORS 后,可以使用 Postman 等工具、浏览器或前端应用程序从不同的源发送请求进行测试。检查响应头中的条目,Access-Control-Allow-Origin以确认 CORS 是否按预期工作。

常见问题及故障排除

  1. 策略未应用: 请确保策略名称与UseCors中定义的策略名称匹配AddCors
  2. 选项请求失败: 如果您的 API 包含复杂请求,请确保该OPTIONS方法已被允许。
  3. 配置错误的源: 请仔细检查方法中的域名WithOrigins

结论

ASP.NET Core 中使用现代托管模型启用 CORS 非常简单,并且可以确保安全的跨域资源共享。通过有效地理解和配置 CORS 策略,您可以在保持安全性的同时增强应用程序的互操作性。

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

相关推荐
步行cgn42 分钟前
Spring Boot 将配置绑定到第三方对象详解
spring boot·后端·python
码事漫谈9 小时前
多人共用一个 key,缓存命中率会不会因此降低?
后端
考虑考虑10 小时前
docker compose环境变量替换
运维·后端·自动化运维
武雄(小星Ai)11 小时前
飞书API上传26MB文件偶发失败:错误码9499与空响应体排坑实录
后端·api·排坑实录
徐小夕11 小时前
JitWord 4.0 万字分享:从协同工具到AI Word操作系统,聊聊3年产品创业史
前端·vue.js·后端
geovindu12 小时前
CSharp: Observer Pattern
开发语言·后端·观察者模式·设计模式·c#·.netcore·行为模式
Flynt13 小时前
把公司项目迁到 Spring Boot 4.0:编译通过只是开始
java·spring boot·后端
IT_陈寒13 小时前
Redis误用keys命令把生产环境搞崩了,血的教训
前端·人工智能·后端
她的男孩14 小时前
多租户和数据权限怎么共存?扒完拦截器注册链路,我找到 4 个隐蔽的坑
java·后端·架构
用户83562907805114 小时前
使用 Python 设置 Excel 页眉和页脚
后端·python