Pour se connecter via SignalR à un serveur ASP.NET Core 2.1 de n'importe quelle origine, nous avons dû configurer le pipeline comme suit:
app.UseCors (
builder => builder
.AllowAnyHeader ()
.AllowAnyMethod ()
.AllowAnyOrigin ()
.AllowCredentials ()
)
Selon le document this , ASP.NET Core 2.2 n'autorise plus la combinaison de AllowAnyOrigin et AllowCredentials, alors quelle serait la solution? Alors que SignalR Core envoie toujours withCredentials: true dans XMLHtppRequest.
Ce dont j'ai besoin, c'est que de n'importe quelle origine et sans informations d'identification, nos utilisateurs peuvent se connecter au SignalR Hub.
Il existe une solution de contournement, remplacez AllowAnyOrigin
par SetIsOriginAllowed
:
app.UseCors(builder => builder
.AllowAnyHeader()
.AllowAnyMethod()
.SetIsOriginAllowed(_ => true)
.AllowCredentials()
);
Vous pouvez utiliser la méthode "WithOrigins" en passant les origines, peut-être lue par configuration.
app.UseCors(builder => builder
.AllowAnyHeader()
.AllowAnyMethod()
.WithOrigins(new string[] { "www.example1.com", "www.example2.com" })
.AllowCredentials()
);
Si la seule chaîne passée est "*", vous avez toujours des problèmes avec signalR. Si vous passez plusieurs chaînes et que l'une d'entre elles est "*", cela fonctionne.