【发布时间】:2020-03-12 19:31:40
【问题描述】:
来源在 Startup.cs 中被列入白名单 (http://localhost:4200/),但请求因 Cors 而被拒绝。
这适用于我的 API 上的 GET 请求以及我尝试通过 SignalR 建立连接时。我能够绕过 Cors 通过 AllowAllOrigins 阻止 API 请求,但这不是 SignalR 的可行解决方案,它需要 .AllowCredentials。
拒绝表明我已将正确的域列入白名单。只是好像没有得到尊重。
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
options.AddPolicy(MyAllowSpecificOrigins,
builder =>
{
builder
.WithMethods("GET","POST")
.AllowAnyHeader()
.AllowCredentials()
.WithOrigins("http://localhost:4200/");
}));
services.AddRazorPages();
services.AddControllers();
services.AddSignalR();
services.AddDbContext<WebApplication2Context>(options =>
options.UseSqlServer(Configuration.GetConnectionString("WebApplication2Context")));
}
我知道正在应用该政策。当我将 withOrigins 更改为 allOrigins 时,它在启动时失败。
【问题讨论】:
-
我建议使用“UseSpa”中间件而不是 CORS 白名单。您可以按照以下方式独立运行“ng serve”:docs.microsoft.com/en-us/aspnet/core/client-side/spa/…
标签: angular asp.net-core cors signalr asp.net-core-webapi