SignalR Core 2.2 CORS AllowAnyOrigin () критическое изменение - PullRequest
0 голосов
/ 15 декабря 2018

Чтобы подключиться через SignalR к серверу ASP.NET Core 2.1 из любого источника, нам пришлось настроить конвейер следующим образом:

app.UseCors (
  builder => builder
   .AllowAnyHeader ()
   .AllowAnyMethod ()
   .AllowAnyOrigin ()
   .AllowCredentials ()
)

В соответствии с этим документом ASP.NET Core 2.2 больше не позволяет сочетать AllowAnyOrigin и AllowCredentials, так что бы это было решение?В то время как ядро ​​SignalR всегда отправляет withCredentials: true в XMLHtppRequest.

Что мне нужно, так это то, что из любого источника и без учетных данных наши пользователи могут подключаться к SignalR Hub.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Вы можете использовать метод «WithOrigins», передающий происхождение, может быть прочитан по конфигурации.

app.UseCors(builder => builder
            .AllowAnyHeader()
            .AllowAnyMethod()
            .WithOrigins(new string[] { "www.example1.com", "www.example2.com" })
            .AllowCredentials()
        );

Если единственная передаваемая строка - «*», у вас все еще есть проблемы с signalR.Если вы передаете много строк, и одна из них - «*», это сработает.

0 голосов
/ 15 декабря 2018

Существует обходной путь, измените AllowAnyOrigin на SetIsOriginAllowed:

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