Połączenia międzydomenowe SignalR z własnym hostowaniem i uwierzytelnianiem

Mam problem z CORS podczas samodzielnego hostowania SignalR z OWIN, co zdarza się tylko, gdy próbuję włączyć uwierzytelnianie.

Błąd w mojej przeglądarce to:

XMLHttpRequest nie może się załadowaćhttp: //.../signalr/negotiate? [snip] Pochodzenie ... nie jest dozwolone przez Kontrolę dostępu-Pozwolenie-Pochodzenie

Dzieje się tak tylko wtedy, gdy włączę uwierzytelnianie na moim serwerze hostowanym przy użyciu podejścia wta odpowiedź:

public void Configuration(IAppBuilder app)
{
  var listener = (HttpListener)app.Properties[typeof(HttpListener).FullName];
  listener.AuthenticationSchemes = AuthenticationSchemes.Ntlm; 

  app.MapHubs(new HubConfiguration { EnableCrossDomain = true });
} 

Jeśli komentujęAuthenticationSchemes line następnie CORS działa (i wszystko sprawdziłemte instrukcje). Mam ten sam problem, jeśli używam innych schematów uwierzytelniania niż NTLM.

Używając Skrzypka, aby sprawdzić, co się dzieje,bez włączone uwierzytelnianie Widzę niezbędne nagłówki CORS wracające z serwera:

Access-Control-Allow-Credentials: true
Kontrola dostępu-Zezwól-Pochodzenie: [mój serwer]

Jednak po włączeniu uwierzytelniania otrzymuję odpowiedź 401, w której brakuje tych nagłówków. Wszystkie prośby są niezbędneOrigin nagłówek.

Po zbadaniu SignalRkod źródłowy wygląda na to, że nagłówki są ustawiane, ale prawdopodobnie z włączonym uwierzytelnianiemHttpListener wysyła początkową odpowiedź 401 bez trafienia w ten kod.

Myślę więc, że moje pytanie brzmi: jak zdobyćHttpListener zawieraćAccess-Control-Allow-Origin nagłówek w negocjowaniu protokołów uwierzytelniania?

questionAnswers(2)

yourAnswerToTheQuestion