C# 对飞行前请求的响应不';t通过访问控制检查:';访问控制允许凭据';响应中的头是'';
一、 am在angular 6和asp.net内核上使用信号器功能。但继续获取此错误对飞行前请求的响应未通过访问控制检查:响应中“访问控制允许凭据”标头的值为“”,当请求的凭据模式为“包括”时,该值必须为“真”。 做了一些研究,发现这是服务器端的CORS问题。所以修改了服务器代码 startup.csC# 对飞行前请求的响应不';t通过访问控制检查:';访问控制允许凭据';响应中的头是'';,c#,angular,asp.net-core,asp.net-core-signalr,C#,Angular,Asp.net Core,Asp.net Core Signalr,一、 am在angular 6和asp.net内核上使用信号器功能。但继续获取此错误对飞行前请求的响应未通过访问控制检查:响应中“访问控制允许凭据”标头的值为“”,当请求的凭据模式为“包括”时,该值必须为“真”。 做了一些研究,发现这是服务器端的CORS问题。所以修改了服务器代码 startup.cs public void ConfigureServices(IServiceCollection services) { services.AddCors(o =>
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.WithOrigins("http://localhost:4200");
}));
services.AddSignalR();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseCors("CorsPolicy");
app.UseSignalR(routes =>
{
routes.MapHub<SignalR>("/rule");
});
}
参考资料
您必须允许您的cors策略使用凭据,因为信号器也在传递cookies
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials()
.WithOrigins("http://localhost:4200");
}));
services.AddSignalR();
}
获取另一个错误,因为无法完成与服务器的协商:错误:未找到。则集线器终结点无效。这是一个新错误,我建议在此之前为这个问题和谷歌创建一个新问题。我花了半个下午的时间试图解决这个问题,我所需要做的就是添加。AllowCredentials()非常感谢
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials()
.WithOrigins("http://localhost:4200");
}));
services.AddSignalR();
}