Ember.js .NET Core 3.1 CORS不在Ember(3.12)web UI上工作

Ember.js .NET Core 3.1 CORS不在Ember(3.12)web UI上工作,ember.js,cors,cross-domain,ember-data,asp.net-core-3.1,Ember.js,Cors,Cross Domain,Ember Data,Asp.net Core 3.1,我正在将.NET核心Web API从2.2迁移到3.1。我已经按照Microsoft迁移说明,在UseRouting和UseEnpoints之间调用了CORS中间件。然而,我仍然得到CORS错误 在ConfigureServices方法中,我有: services.AddCors(); 在Configure方法中,我有: app.UseRouting(); app.UseCors(options => options .AllowAnyOrigin()

我正在将.NET核心Web API从2.2迁移到3.1。我已经按照Microsoft迁移说明,在UseRouting和UseEnpoints之间调用了CORS中间件。然而,我仍然得到CORS错误

在ConfigureServices方法中,我有:

services.AddCors();
在Configure方法中,我有:

app.UseRouting();

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

app.UseAuthentication();

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
});
web浏览器中的控制台错误为:

已阻止跨源请求:同一源策略不允许读取 位于的远程资源。(理由: CORS标头“访问控制允许来源”缺失)

已阻止跨源请求:同一源策略不允许读取 位于的远程资源。(理由: CORS请求未成功)

诊断:

我试图遵循微软的文档,但它使用了过时的引用,例如;使用MVC和IHostingEnvironment

我尝试创建一个全新的Web API和Ember Web UI,但也没有成功。你可以找到一个简单的例子

知道是什么导致了这个问题吗

最理想的悬赏奖励将是有效的答案。最好是在Git上发布一个工作的裸体项目

注意:我现在允许任何来源,只是为了让它工作。最终,这将需要与
http://localhost:4200

更新


收到的状态代码为HTTP 405-不允许使用方法。所讨论的方法是一种期权方法

.NETCore2.2到3.0的迁移文档是。调用
UseCors()
需要放在
UseRouting()
函数之前。正如我在另一个站点的实现中看到的那样,我继续在
UseHttpsRedirection()
之前添加了它

在配置服务中

services.AddCors(options =>
{
    options.AddPolicy("CorsApiPolicy",
    builder =>
    {
        builder.WithOrigins("http://localhost:4200")
            .WithHeaders(new[] { "authorization", "content-type", "accept" })
            .WithMethods(new[] { "GET", "POST", "PUT", "DELETE", "OPTIONS" })
            ;
    });
});
在配置中

app.UseCors("CorsApiPolicy");

//app.UseHttpsRedirection(); 

app.UseJsonApi();

app.UseRouting();

app.UseAuthentication();

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
});

您是否检查了响应的HTTP状态代码?您可以使用浏览器devtools中的网络窗格进行检查。您是否确认这是一个200 OK成功响应,而不是4xx或5xx错误?HTTP错误为405,方法不允许。我添加了
AllowAnyMethod()
,但没有成功。注意,我可以向后端提交邮递员请求,并获得HTTP 200的响应。好的,是的,然后听起来405错误是对CORS飞行前选项请求的响应。您可以在浏览器devtools中检查网络窗格以确认这一点。您应该将HTTP方法列为选项,而不是POST或GET或前端JavaScript代码试图使用的任何方法。如果前端代码试图向请求添加任何自定义标头,或者前端代码使用的HTTP方法不是GET、POST或HEAD,浏览器将发送CORS飞行前选项请求。如果405是对CORS飞行前选项请求的响应,那么问题是
http://localhost:5000/users/login
服务器未配置为允许选项请求。将该服务器配置为允许选项请求与服务器的CORS配置不同。您可以在或的现有答案中找到405问题的解决方案。您可以在或的现有答案中找到405问题的解决方案。谢谢!!!你这群混血儿。又浪费了我生命中的24小时!谢谢!保存的!当中间件中有一个全局策略时,它是最佳选择。但是,当您想在特定控制器中使用另一个CORS策略时,该怎么办?您应该为此发布一个问题。