Угловой клиент сигнализатора ядра ASP.net, ошибка «Ответ на предполетный запрос не проходит проверку контроля доступа» - PullRequest
0 голосов
/ 03 октября 2018

Таким образом, у меня есть этот код в главном сервере ASP.Net startup.cs в методе ConfigureServices:

services.AddCors(o => o.AddPolicy("CorsPolicy", builder => {
            builder
            .AllowAnyMethod()
            .AllowAnyHeader()
            .WithOrigins("https://localhost:44345");
        }));

А в методе Configure:

app.UseCors("CorsPolicy");

В угловом у меня это:

  ngOnInit(): void

{

this._hubConnection = new signalR.HubConnectionBuilder().withUrl('https://localhost:44305/hub').build();
this._hubConnection
  .start()
  .then(() => console.log('Connection started!'))
  .catch(err => console.log('Error while establishing connection :('));

}

Клиентская часть и серверная часть будут работать в разных доменах, это два отдельных проекта в Visual Studio.

В любом случае при запуске углового кода я получаю эту ошибку:

Failed to load https://localhost:44305/hub/negotiate: Response to preflight request doesn't pass access control check: The value of the 'Access-Control-Allow-Credentials' header in the response is '' which must be 'true' when the request's credentials mode is 'include'. Origin 'https://localhost:44345' is therefore not allowed access. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.

Так что я думаю, у меня есть 2 варианта: либо получить код на стороне клиента, чтобы передать false для атрибута withCredentials, либо как-то изменить сторону серверакод делает это отправляет заголовок ответа Access-Control-Allow-Credentials установлен в значение true.Проблема в том, что я не знаю, как это сделать, я нигде не могу найти настройки для withCredentials.

1 Ответ

0 голосов
/ 03 октября 2018

Я решил, мне нужно было включить .AllowCredentials () в часть services.addCors.

...