【发布时间】:2017-08-17 06:21:55
【问题描述】:
我有一个 angularjs 应用程序调用的 aspnetcore web api,该应用程序在本地运行良好。我启用了 CORS,因为这是我现在可以让客户端使用 API 的唯一方法(这似乎很有意义,我现在需要担心其他事情)。
今天升级到 aspnetcore 2.0 后(因为它有几个我可以真正使用的功能)我现在遇到了与启用 CORS 之前相同的错误:
请求的资源上不存在“Access-Control-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 和仅供参考,我计划在生产中限制 CORS,因此它只接受来自给定子域的调用,但目前还有一段路要走。
【问题讨论】:
-
在浏览器的开发工具中检查响应。当服务器实际上无法处理请求并发送 500 时,我经常遇到这种情况(在这种情况下,CORS 标头没有设置)。
-
这是错误,我知道正在发生,但我不知道为什么没有设置它们!
-
再次阅读我的评论并检查浏览器开发工具中的网络选项卡。 “No 'Access-Control-Allow-Origin' header” 是浏览器执行请求时出现的错误,但缺少标头的原因可能是服务器错误。
-
对不起,我现在明白你的意思了(我之前完全误解了)。我刚刚启动了 Postman,可以看到这是因为 500 错误(很恼火我以前没想过要检查)。我将调查并发布我的发现,因为它可能有助于其他人升级。
标签: asp.net-core asp.net-core-webapi