从 .NET Core 2.1 迁移到 v3.1 后出现“被 CORS 阻止”错误
Posted
技术标签:
【中文标题】从 .NET Core 2.1 迁移到 v3.1 后出现“被 CORS 阻止”错误【英文标题】:"Blocked by CORS" error after migrating from .NET Core 2.1 to v3.1 【发布时间】:2021-11-25 07:33:45 【问题描述】:我有一个最初用 .NET Core v2.1 编写的 Web 应用程序。
在我将它迁移到 .NET Core v3.1 之后 - 我的所有 UI 请求都抛出以下错误:
*Access to XMLHttpRequest at 'https://myapp.net/v1/myendpoint' from origin 'https://mainapp.net' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.*
这是我的 Startup.cs:
public void ConfigureServices(IServiceCollection services)
...
services.AddCors(options =>
options.AddPolicy("MyCorsPolicy", builder => builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader());
);
...
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
app.MyRequireTLSOnRemoteConnections(); // <-- (proprietary)
if (env.EnvironmentName == "Development")
app.UseDeveloperExceptionPage();
app.UseAuthentication();
app.UseReportingAuthentication();
app.UseCors("MyCorsPolicy");
app.UseSwagger();
...
我有意删除了 app.UseHttpsRedirection(); 以完全禁用 HTTP 调用。
该问题是特定于 UI 的,并且在通过 Postman 执行端点时不会发生。
我已经尝试了不同的选项,我可以在互联网上找到,例如:
在 app.UseCors() 之前添加app.UseRouting();
;
但仍然出现错误。
【问题讨论】:
【参考方案1】:似乎解决我的问题的方法是将 app.UseCors("MyCorsPolicy"); 移到方法的顶部。至少它为我解决了这个问题。
【讨论】:
以上是关于从 .NET Core 2.1 迁移到 v3.1 后出现“被 CORS 阻止”错误的主要内容,如果未能解决你的问题,请参考以下文章
从.Net core 2.2迁移到.Net Core 3.0
从 ASP.NET MVC 迁移到 ASP.NET Core MVC
带有 Windows 身份验证的 ASP.NET Core 2.1 自定义 RoleProvider
为啥从 .net core 3.1 迁移到 .net 5 时 JSON 返回值发生了变化