0

0

.NET Core Web API如何处理跨域(CORS)问题_CORS跨域解决方案

小老鼠

小老鼠

发布时间:2025-11-10 23:58:02

|

1048人浏览过

|

来源于php中文网

原创

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

.net core web api如何处理跨域(cors)问题_cors跨域解决方案

.NET Core Web API 处理跨域(CORS)问题,主要通过内置的 CORS 中间件来实现。只要在请求来源的域名、协议或端口与 API 所在地址不一致时,浏览器就会触发跨域限制。要解决这个问题,需要在服务端正确配置 CORS 策略。

启用 CORS 中间件

在 .NET Core 项目中,CORS 功能需要显式启用。需在 Program.cs 文件中添加相关配置:

builder.Services.AddCors(options =>

{

  options.AddPolicy("AllowAll", policy =>

  {

Tellers AI
Tellers AI

Tellers是一款自动视频编辑工具,可以将文本、文章或故事转换为视频。

下载

    policy.AllowAnyOrigin()

       .AllowAnyMethod()

       .AllowAnyHeader();

  });

});

 

var app = builder.Build();

app.UseCors("AllowAll");

注意: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 上应用策略

如果不想全局启用 CORS,可以只对特定接口启用:

[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,必须指定具体域名。

基本上就这些。合理配置策略既能解决跨域问题,又能保证安全性。开发阶段可用宽松策略,上线前务必收紧权限。

相关专题

更多
什么是中间件
什么是中间件

中间件是一种软件组件,充当不兼容组件之间的桥梁,提供额外服务,例如集成异构系统、提供常用服务、提高应用程序性能,以及简化应用程序开发。想了解更多中间件的相关内容,可以阅读本专题下面的文章。

178

2024.05.11

Golang 中间件开发与微服务架构
Golang 中间件开发与微服务架构

本专题系统讲解 Golang 在微服务架构中的中间件开发,包括日志处理、限流与熔断、认证与授权、服务监控、API 网关设计等常见中间件功能的实现。通过实战项目,帮助开发者理解如何使用 Go 编写高效、可扩展的中间件组件,并在微服务环境中进行灵活部署与管理。

212

2025.12.18

cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

6419

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

343

2023.11.23

阻止所有cookie什么意思
阻止所有cookie什么意思

阻止所有cookie意味着在浏览器中禁止接受和存储网站发送的cookie。阻止所有cookie可能会影响许多网站的使用体验,因为许多网站使用cookie来提供个性化服务、存储用户信息或跟踪用户行为。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

410

2024.02.23

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

88

2025.08.19

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1023

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

66

2025.10.17

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 8.8万人学习

CSS3 教程
CSS3 教程

共18课时 | 4.6万人学习

Vue 教程
Vue 教程

共42课时 | 6.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号