web-dev-qa-db-fra.com

SignalR Core 2.2 CORS AllowAnyOrigin () rupture changement

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.

9
Alexandre

Il existe une solution de contournement, remplacez AllowAnyOrigin par SetIsOriginAllowed:

app.UseCors(builder => builder
                .AllowAnyHeader()
                .AllowAnyMethod()
                .SetIsOriginAllowed(_ => true)
                .AllowCredentials()
            );
19
Alexandre

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.

0
Lorenzo Isidori