Conexões de domínio cruzado SignalR com auto-hospedagem e autenticação

Eu tenho um problema de CORS quando auto-hosting SignalR com OWIN, o que só acontece quando eu tento habilitar a autenticação.

O erro que recebo no meu navegador é:

XMLHttpRequest não pode carregarhttp: //.../signalr/negotiate? [snip] Origem ... não é permitida pelo Access-Control-Allow-Origin

Isso só acontece se eu habilitar a autenticação em meu servidor auto-hospedado usando a abordagem emesta resposta:

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

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

Se eu comentar oAuthenticationSchemes linha então CORS funciona (e eu verifiquei tudo emestas instruções). Eu recebo o mesmo problema se eu usar outros esquemas de autenticação que o NTLM.

Usando o Fiddler para examinar o que está acontecendosem Autenticação ativada Eu vejo os cabeçalhos necessários do CORS voltando do servidor:

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: [meu servidor]

No entanto, uma vez que eu ative a autenticação, recebo uma resposta 401 que não possui esses cabeçalhos. Todos os pedidos têm o necessárioOrigin cabeçalho.

Tendo examinado o SignalRCódigo fonte parece que os cabeçalhos estão sendo definidos, mas presumivelmente com a autenticação habilitadaHttpListener está enviando a resposta 401 inicial sem acertar este código.

Então eu acho que a minha pergunta é: como faço para obter oHttpListener para incluir umAccess-Control-Allow-Origin cabeçalho em sua negociação de protocolos de autenticação?

questionAnswers(2)

yourAnswerToTheQuestion