Я использую Windows аутентификацию на серверном приложении ASP. NET Core 2.2, и все работает нормально, кроме SignalR в Angular 8 приложении. Я получаю следующую ошибку:
Доступ к XMLHttpRequest по адресу http://localhost: 2110 / api / aircrafts / hub /gotiate 'from origin' http://localhost: 2302 'заблокировано политикой CORS: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».
localhost: 2302 - это клиентская часть, работающая Angular 8 с @ aspnet / signalr@1.1.4 и localhost: 2110 это серверная часть. Вот мой код сервера:
Startup.cs Метод настройки
app.UseCors("CORS");
app.UseAuthentication();
var relativeUri = webSettings.SignalRAircraftsUri.ToString();
app.UseSignalR(hubs => { hubs.MapHub<AircraftsHub>(relativeUri); });
Startup.cs Метод ConfigureServices
services.AddCors(options =>
{
options.AddPolicy("CORS", builder =>
{
builder
.AllowAnyMethod()
.AllowAnyHeader()
.WithOrigins(webSettings.AllowedHosts.ToArray())
.AllowCredentials();
});
});
services.AddSignalR();
services.AddAuthentication(IISDefaults.AuthenticationScheme);
webSettings.AllowedHosts содержит localhost: 2302 .
launchsettings. json:
"iisSettings": {
"windowsAuthentication": true,
"anonymousAuthentication": false,
"iisExpress": {
"applicationUrl": "http://localhost:2110",
"sslPort": 0
}
},
И это Angular код:
const signalRConnection = new signalR.HubConnectionBuilder().withUrl(url).build();
signalRConnection.start();
, где url равен localhost: 2110 / API / aircraft / hub
Любая помощь будет с благодарностью.