San*_*isy 0 c# asp.net-core angular asp.net-core-signalr
我,我正在使用angular 6和asp.net核心上的SignalR功能.但不断收到此错误对预检请求的响应未通过访问控制检查:响应中的"Access-Control-Allow-Credentials"标头的值为'',当请求的凭据模式为'时,该值必须为'true'包括'.
做了一些研究,发现它是服务器端的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");
});
}
Run Code Online (Sandbox Code Playgroud)
角应用
ngOnInit() {
this.callSignalR()
}
private callSignalR(): void {
// set up the signal R
let connection = new signalR.HubConnectionBuilder().withUrl(environment.baseUrl+"/rule").build();
//start the connection
connection.start().then(() => connection.invoke("updateRules", this.autheService.getCurrentuser.userId));
//Get the response from the server
connection.on("updateRules", data => {console.log(data);});
}
Run Code Online (Sandbox Code Playgroud)
引用
Access-Control-Allow-Origin - Angular 5
响应中的"Access-Control-Allow-Credentials"标题为"必须为'true'
https://github.com/aspnet/SignalR/issues/2095
您必须允许您的cors-policy凭据,因为signalr也会传递Cookie.
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials()
.WithOrigins("http://localhost:4200");
}));
services.AddSignalR();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1445 次 |
| 最近记录: |