C# Can';无法让CORS为ASP.NET核心Web API工作

C# Can';无法让CORS为ASP.NET核心Web API工作,c#,asp.net-core,cors,C#,Asp.net Core,Cors,我有两个本地运行的应用程序。一个是提供JSON响应的ASP.NET核心Web API()。另一个是调用API的Javascript应用程序()。我正在测试的API端点是一个POST请求,我已经向Fiddler确认该端点正在工作 当我从Chrome中的Javascript应用程序发出POST请求时,我看到以下错误: 未能加载:对飞行前的响应 请求未通过访问控制检查:否 “Access Control Allow Origin”标头出现在请求的服务器上 资源。因此,不允许使用源“” 进入 但是,这是

我有两个本地运行的应用程序。一个是提供JSON响应的ASP.NET核心Web API()。另一个是调用API的Javascript应用程序()。我正在测试的API端点是一个POST请求,我已经向Fiddler确认该端点正在工作

当我从Chrome中的Javascript应用程序发出POST请求时,我看到以下错误:

未能加载:对飞行前的响应 请求未通过访问控制检查:否 “Access Control Allow Origin”标头出现在请求的服务器上 资源。因此,不允许使用源“” 进入

但是,这是我的API的
启动
的全部内容:

public Startup(IConfiguration configuration)
{
    Configuration = configuration;
}

public IConfiguration Configuration { get; }

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

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseCors("DefaultCorsPolicy");

    app.UseMvc();
}
我一直在跟踪,所以我不确定我错过了什么

以下是我在Fiddler中从该端点获得的原始响应:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Server: Kestrel
X-Powered-By: ASP.NET
Date: Sat, 10 Mar 2018 09:23:46 GMT
Content-Length: 37

[{"id":1,"name":"lorem ipsum dolor"}]

如您所见,不存在
访问控制允许源文件
标题。

您可以尝试在services.UseCors()调用中配置CORS选项,而不是services.AddCors()

注意:通过清除客户端缓存(如果有)进行测试。在Chrome>F12>网络选项卡>勾选禁用缓存复选框>刷新页面


你能在打电话时给我们看一下回复信息吗?我在问题的末尾加了一句。在阅读此()之后,我还重新排序了
UseCors
UseMvc
语句,但这并没有改变行为。对于我来说,可以尝试重建API解决方案。@getsetcode尝试添加
.AllowAnyHeader()
well@orel-谢谢你的检查。我已经用许多不同的配置重建了很多次。我肯定错过了什么,但我无法想象会是什么。
public void ConfigureServices(IServiceCollection services)
{
    services.AddCors();
    services.AddMvcCore();
    ...
}


public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseCors(builder => builder
        .WithOrigins("http://localhost:8000")
        .AllowAnyHeader()
        .AllowAnyMethod()
    );

    app.UseMvcCore();
    ...
}