在 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 策略,您可以在保持安全性的同时增强应用程序的互操作性。

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

相关推荐
程序员海军7 小时前
用了两年多 GPT,我最近开始换模型了,还折腾了个求职避坑 Agent
前端·人工智能·后端
码士集团小青7 小时前
SpringBoot 集成缓存性能之王 Caffeine
spring boot·后端·缓存
excel9 小时前
IndexNow:让搜索引擎更快发现网站更新的主动通知协议
前端·后端·架构
Json____9 小时前
用 FastAPI + Vue3 打造一套完整的在线考试系统:从组卷到阅卷的业务闭环实践
后端·node.js·fastapi·it学习·wwwoop.com
小灰灰搞电子10 小时前
Rust+Slint 实现FTP客户端调试助手源码分享
开发语言·后端·rust
专业程序开发源10 小时前
springboot欧缇蔓月子中心管理系统82697-计算机课程设计、毕业设计
java·spring boot·后端·python·spring·django·课程设计
卷无止境11 小时前
面向arm64桌面客户端开发全景:语言、框架与生态
后端·python
IT_陈寒11 小时前
JavaScript的闭包陷阱,这个坑我躺了三天才爬出来
前端·人工智能·后端
用户83562907805111 小时前
如何使用 Python 对 Excel 数据进行分组和分级显示
后端·python
vx_Biye_Design12 小时前
django房屋租赁推荐系统78455-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·课程设计·express