Ho un problema CORS quando SignalR self-hosting con OWIN, che si verifica solo quando provo ad abilitare l'autenticazione.Connessione tra domini SignalR con self-hosting e autenticazione
L'errore che ottengo nel mio browser web è:
XMLHttpRequest non può caricare http://.../signalr/negotiate?[snip] origine ... non è consentita da Access-Control-Allow-Origin
Questo accade solo se io attivare l'autenticazione nel mio server self-hosted utilizzando l'approccio in this answer:
public void Configuration(IAppBuilder app)
{
var listener = (HttpListener)app.Properties[typeof(HttpListener).FullName];
listener.AuthenticationSchemes = AuthenticationSchemes.Ntlm;
app.MapHubs(new HubConfiguration { EnableCrossDomain = true });
}
Se commento fuori laLineaquindi CORS funziona (e ho controllato tutto in these instructions). Ottengo lo stesso problema se utilizzo altri schemi di autenticazione di NTLM.
Utilizzando Fiddler per esaminare che cosa sta succedendo, senza autenticazione abilitato vedo le necessarie intestazioni CORS tornando dal server:
Access-Control-Allow-Credenziali: vero
Access-Control- Allow-Origin: [my server]
Tuttavia una volta abilitata l'autenticazione ottengo una risposta 401 che manca queste intestazioni. Tutte le richieste hanno l'intestazione Origin
necessaria.
Dopo aver esaminato il SignalR source code, sembra che le intestazioni siano state impostate, ma presumibilmente con l'autenticazione abilitata il HttpListener
sta inviando la risposta iniziale 401 senza colpire questo codice.
Quindi penso che la mia domanda è: come faccio a ottenere il HttpListener
per includere un'intestazione Access-Control-Allow-Origin
nella sua negoziazione dei protocolli di autenticazione?
Vi siete mai andati oltre? Sto soffrendo lo stesso problema ... –