.net core 在.NET核心Api上启用CORS?

.net core 在.NET核心Api上启用CORS?,.net-core,cors,.net Core,Cors,我试图允许运行在localhost:4200的ANgular应用程序能够从运行在localhost:44337的后端api.NET Core 2.2 api请求数据。我在ConfigureServices中添加了核心策略,将其添加到Configure,并在我的端点上添加了UseCors注释,但仍然出现以下错误: Access to XMLHttpRequest at 'https://localhost:44337/api/users/1' from origin 'http://localho

我试图允许运行在
localhost:4200
的ANgular应用程序能够从运行在
localhost:44337
的后端api.NET Core 2.2 api请求数据。我在
ConfigureServices
中添加了核心策略,将其添加到
Configure
,并在我的端点上添加了
UseCors
注释,但仍然出现以下错误:

Access to XMLHttpRequest at 'https://localhost:44337/api/users/1' from origin 'http://localhost:4200' 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 string DefaultCorsPolicy = "DefaultCorsPolicy";

public void ConfigureServices(IServiceCollection services) 
{
    services.AddCors(options =>
        {
            options.AddPolicy(DefaultCorsPolicy,
                builder =>
                {
                    builder
                        .AllowAnyHeader()
                        .AllowAnyMethod()
                        .WithOrigins("http://localhost:4200/");
                });
        });

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseCors(DefaultCorsPolicy);
    app.UseMvc();
}
UsersController.cs

[HttpGet("{id}")]
[EnableCors("DefaultCorsPolicy")]
public async Task<ActionResult> GetUser(int id)
{
    var settings = await _service.GetUser(id);
    return Ok(settings);
}
[HttpGet(“{id}”)]
[启用公司(“默认公司政策”)]
公共异步任务GetUser(int-id)
{
var settings=wait_service.GetUser(id);
返回Ok(设置);
}
如果我在实际的
GetUser
方法中添加
Response.Headers.add(“Access Control Allow Origin”、“*”)
,它将起作用。但我不想强逼它


我确保将
AddCors
UseCors
调用分别放在
ConfigureServices
Configure
的开头。但它仍然不起作用

这就是我的情况(与您描述的相同)。 如果这有效,你可以开始变窄

services.AddCors(options =>
{
    options.AddPolicy(DefaultCorsPolicy,
        builder => builder
            .SetIsOriginAllowed((host) => true)
            .AllowAnyMethod()
            .AllowAnyHeader()
            .AllowCredentials());
});

当然,我没有
[EnableCors(“DefaultCorsPolicy”)]
属性,因为我在所有方法上都允许它。它以什么方式“不起作用”?以下是MS文档:当angular应用程序调用
用户
端点时,我希望接收使用数据-相反,我会在控制台中得到上面的错误。是的,成功了!看起来MS将AddCors的语法更改为2.2。算了吧,谢谢!