Asp.net CORS错误发生在信号机协商阶段
从Asp.net core 2.2迁移到3.1后,控制台中出现以下错误Asp.net CORS错误发生在信号机协商阶段,asp.net,signalr,asp.net-core-3.1,Asp.net,Signalr,Asp.net Core 3.1,从Asp.net core 2.2迁移到3.1后,控制台中出现以下错误 Access to XMLHttpRequest at 'someuri/negotiate?negotiateVersion=1' from origin 'http://localhost:4208' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resourc
Access to XMLHttpRequest at 'someuri/negotiate?negotiateVersion=1' from
origin 'http://localhost:4208'
has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested
resource.
以及以下信号机配置:
app.UseCors(Constants.Policy);
app.UseAuthentication();
app.UseEndpoints(
endpoints =>
{
endpoints.MapHub<SomeHub>("/ws/someuri");
});
但是它没有帮助。您应该以这种方式配置CORS
,并且顺序非常重要强>
在配置方法上:
public override void Configure(IApplicationBuilder应用程序、主机配置主机配置、ILogger记录器)
{
配置(应用程序、主机配置、记录器);
app.UseWebSockets();
app.UseCors(CorsPolicy);//首先配置CORS,然后配置map Hub
app.UseEndpoints(端点=>
{
endpoints.MapHub(“/someuri”);
});
}
然后,在添加COR时:
//
///添加CORS。
///
私人void AddCors(IServiceCollection服务)
{
services.AddCors(选项=>
{
options.AddPolicy(CorsPolicy,builder=>builder.WithOrigins(“http://localhost:4208")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
.SetIsOriginAllowed((主机)=>true));
});
}
您可以看到更详细的答案。谢谢,我会尽力的,但是我应该更新Angular Signal软件包吗???@VladislavFurdak客户端软件包已从@aspnet/signal
迁移到@microsoft/signal
,因此您应该将软件包升级到3.1.3版:然后从uri中删除ws
。另外,请添加您如何连接到服务器的Angular代码。如何传递令牌在客户端?你有安替比妥吗?如前所述,请添加客户端代码。
options.AddPolicy(Constants.Policy,
p =>
p.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
.WithOrigins("http://localhost:4208"));