2017-08-17 75 views
2

我有一个aspnetcore web api被一个在本地工作正常的angularjs应用程序调用。我启用了CORS,因为这是我现在可以让客户端使用API​​的唯一方式(这似乎是有道理的,现在我需要担心其他事情)。CORS升级到aspnetcore 2.0后无法正常工作

升级到aspnetcore 2.0今日(因为它有几个特点,我可以真正使用)之后,我现在只是拿到我用使CORS之前得到了同样的错误:

否“访问控制-Allow-Origin'标题出现在请求的资源上。

我已将所有dotnetcore软件包升级到版本2.0(包括Microsoft.AspNetCore.Cors)。

这可能是值得指出的是,如下我还没有做出我的启动或配置改动任何代码是:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
    loggerFactory.AddDebug(); 
    app.UseCors(builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());   
    app.UseMvc(); 
} 

public void ConfigureServices(IServiceCollection services) 
{ 
    services.Configure<Models.SmtpConfig>(Configuration.GetSection("Smtp")); 
    services.AddCors(); 
    services.AddMvc(); 
} 

由于这一切之前规定的罚款与aspnetcore 1.1和FYI我打算限制生产中的CORS,因此它只接受来自给定子域的呼叫,但目前尚未解决。

+1

检查浏览器开发工具中的响应。当服务器实际上没有处理请求并且发送了500请求(在这种情况下,CORS头文件未被设置)时,我经常会遇到这种情况。 – poke

+0

这是错误,我知道这是发生,但我不知道他们为什么没有被设置! –

+1

再次阅读我的评论,并检查浏览器开发工具中的网络选项卡。 *“否”Access-Control-Allow-Origin'头文件'*是执行请求的浏览器发生错误,但是头文件丢失的原因可能是由于服务器错误。 – poke

回答

2

我不知道,如果回答这是在这里做正确的事情,但我会说出什么样的问题是(基本上是我自己的愚蠢)...

多亏了戳我的原创评论问题我开始深入研究并添加更多断点(我应该首先完成的),并发现它实际上是代码中的一个问题(我删除了一行代码,它注入了一条命令,它在启动过程中是处理程序),所以在DI代码中有一个运行时错误,其副作用是没有在响应中设置头文件。

不知道为什么调试器没有像以前那样抛出错误,所以对我来说这个教训是,如果我在浏览器中发现CORS错误三重检查它首先不是500服务器错误。

相关问题