Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对飞行前请求的响应不';t通过访问控制检查:';访问控制允许凭据';响应中的头是'';_C#_Angular_Asp.net Core_Asp.net Core Signalr - Fatal编程技术网

C# 对飞行前请求的响应不';t通过访问控制检查:';访问控制允许凭据';响应中的头是'';

C# 对飞行前请求的响应不';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 =>

一、 am在angular 6和asp.net内核上使用信号器功能。但继续获取此错误对飞行前请求的响应未通过访问控制检查:响应中“访问控制允许凭据”标头的值为“”,当请求的凭据模式为“包括”时,该值必须为“真”。

做了一些研究,发现这是服务器端的CORS问题。所以修改了服务器代码

startup.cs

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();
}