EnableCors C# .NET Core 3

Posted

技术标签:

【中文标题】EnableCors C# .NET Core 3【英文标题】: 【发布时间】:2020-02-14 09:20:45 【问题描述】:

我正在使用 C# API 并从我的前端发出 GET 请求,为此我需要在我的 API 中启用 cors,但我似乎做不到!

这是一个 .NET Core 3 API,我尝试过遵循 this 教程,我还尝试通过以下方式安装 2.2 NuGet Package:

dotnet add package Microsoft.AspNetCore.Cors --version 2.2.0

但我在执行 GET 请求时仍然收到 cors 错误。

在尝试 [EnableCors] 注释时,我收到一条错误消息 “找不到 EnableCorsAttribute”...

我也加了

app.UseCors();

到我的 Startup.cs 但没有运气。

任何帮助将不胜感激!

编辑 - Startup.cs 粘贴在这里: https://pastebin.com/pCLSh3Tf

编辑 - 控制器粘贴在这里: https://pastebin.com/mUSfvNR0

【问题讨论】:

为什么是mvc 包?您的 api 是使用 mvc 还是普通的 .net 核心结构创建的?你能试试安装这个包吗nuget.org/packages/Microsoft.AspNetCore.Cors app.UseCors( options => options.WithOrigins("localhost:4200", "localhost:4021").AllowAnyHeader().AllowAnyMethod(); ); @HariHaran 我的错。我没有使用 mvc 包。我已将问题编辑到我使用的正确包中。 【参考方案1】:

在ConfigureServices开头添加以下内容:

services.AddCors();

在Configure的开头添加以下内容:

app.UseCors(x => x.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());

【讨论】:

【参考方案2】:

不确定 Core 3.0 中是否有任何更改,但在 2.2 中我会这样解决:将其添加到 ConfigureServices

services.AddCors(options =>
        
            options.AddPolicy("CorsPolicy",
                builder => builder.AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader());
        );

还要确保在 Configure 方法中添加策略:

app.UseCors("CorsPolicy");

如果你想使用 cors,你可以编辑策略,因为这基本上是禁用它。

【讨论】:

我已添加 Microsoft.AspNetCore.Cors 并将您的答案复制到我的 Startup.cs 中。但是,在控制器中添加 [EnableCors("CorsPolicy")] 时,我仍然无法找到“EnableCorsAttribute”。有什么想法吗? 有了这个,你可以从你的控制器中删除 [EnableCors]。 由于某种原因,我仍然收到 Cors 错误并且找不到 EnableCorsAttribute(我也尝试过删除它).. 如果您想看看,我已经发布了 Startup.cs:@ 987654321@ 你在哪里得到这个错误?启动似乎很好,它应该是配置 CORS 所需的一切。 Cors-"error"/message 来自我的前端。 Firefox 中的开发工具告诉我“cors 请求没有成功”,我已经尝试使用 Java API 解决这个问题,只需在 API 中允许 cors 即可解决。 “未找到 EnableCoursAttribute”来自我的控制器。

以上是关于EnableCors C# .NET Core 3的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET Core 中启用 CORS

.NET Core 端点 + 全局 CORS

.Net Core 3.0 Api json web token 中间件签权验证和 CORS 中间件处理跨域请求

放置请求期间的 ASP Net Core CORS 错误

Asp.Net Core 中控制器方法中的绑定 Guid

.net core 3.1 c# cors 不适用于 Angular 7