当前位置:实例文章 » C#开发实例» [文章]Asp.net Core配置CORS 跨域无效(记录一下)

Asp.net Core配置CORS 跨域无效(记录一下)

发布人:shili8 发布时间:2025-02-14 22:15 阅读次数:0

**ASP.NET Core 配置 CORS 跨域无效**

在 ASP.NET Core 中,跨源资源共享 (CORS) 是一个重要的安全特性,它允许浏览器从一个源(如一个网站)向另一个源(如一个 API)发送请求。然而,在某些情况下,CORS 配置可能会无效,从而导致跨域请求被阻止。

**什么是 CORS**

CORS 是一种机制,允许浏览器向服务器发送额外的 HTTP 头信息,以便服务器可以决定是否接受来自不同源的请求。这些头信息包括:

* `Access-Control-Allow-Origin`: 指定哪些源可以访问资源* `Access-Control-Allow-Methods`: 指定哪些方法(如 GET、POST 等)可以被使用* `Access-Control-Allow-Headers`: 指定哪些头信息可以被发送**ASP.NET Core 中的 CORS 配置**

在 ASP.NET Core 中,CORS 配置是通过 `Microsoft.AspNetCore.Cors` NuGet 包来实现的。要启用 CORS,需要在项目中添加此包,然后在 Startup.cs 文件中配置 CORS。

csharpusing Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;

namespace MyWebApp{
 public class Startup {
 public void ConfigureServices(IServiceCollection services)
 {
 services.AddCors(options =>
 {
 options.AddPolicy("MyPolicy",
 builder => builder.AllowAnyOrigin()
 .AllowAnyMethod()
 .AllowAnyHeader());
 });
 services.AddMvc();
 }

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
 {
 app.UseRouting();
 app.UseCors("MyPolicy");
 app.UseEndpoints(endpoints =>
 {
 endpoints.MapControllers();
 });
 }
 }
}


在上面的代码中,我们使用 `AddCors` 方法添加了一个 CORS 政策,名为 "MyPolicy"。这个政策允许任何源、任何方法和任何头信息。

**跨域请求的流程**

当浏览器向服务器发送跨域请求时,会发生以下流程:

1. 浏览器向服务器发送 OPTIONS 请求,以获取 CORS 头信息2.服务器响应 OPTIONS 请求,并返回 CORS 头信息(如 `Access-Control-Allow-Origin` 等)
3. 浏览器检查 CORS 头信息,如果允许,则继续发送原来的请求**跨域请求被阻止的原因**

在某些情况下,跨域请求可能会被阻止。以下是常见的原因:

* **CORS 配置错误**: CORS 政策配置不正确或缺失* **源域名不匹配**: 请求源和响应源不匹配* **方法不允许**: 请求方法(如 GET、POST 等)不被允许* **头信息不允许**: 请求头信息不被允许**解决跨域请求被阻止的问题**

要解决跨域请求被阻止的问题,需要检查 CORS 配置是否正确,并确保源域名匹配、方法和头信息都允许。

csharpusing Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;

namespace MyWebApp{
 public class Startup {
 public void ConfigureServices(IServiceCollection services)
 {
 services.AddCors(options =>
 {
 options.AddPolicy("MyPolicy",
 builder => builder.WithOrigins(" /> .AllowAnyMethod()
 .AllowAnyHeader());
 });
 services.AddMvc();
 }

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
 {
 app.UseRouting();
 app.UseCors("MyPolicy");
 app.UseEndpoints(endpoints =>
 {
 endpoints.MapControllers();
 });
 }
 }
}


在上面的代码中,我们使用 `WithOrigins` 方法指定了源域名为 " />
**总结**

跨域请求是浏览器向服务器发送的请求,而 CORS 是一种机制,允许服务器决定是否接受来自不同源的请求。在 ASP.NET Core 中,CORS 配置是通过 `Microsoft.AspNetCore.Cors` NuGet 包来实现的。要解决跨域请求被阻止的问题,需要检查 CORS 配置是否正确,并确保源域名匹配、方法和头信息都允许。

**参考**

* [ASP.NET Core 文档:CORS]( />* [Microsoft.AspNetCore.Cors NuGet 包](

相关标签:asp.net后端
其他信息

其他资源

Top