Междоменные соединения SignalR с самостоятельным размещением и аутентификацией
У меня проблема с CORS при самостоятельном размещении SignalR с OWIN, которая возникает только при попытке включить аутентификацию.
Ошибка, которую я получаю в своем веб-браузере:
XMLHttpRequest не может загрузитьHTTP: //.../signalr/negotiate [надрез] Происхождение ... не разрешено Access-Control-Allow-Origin
Это происходит только в том случае, если я включаю аутентификацию на своем сервере, используя подходэтот ответ:
public void Configuration(IAppBuilder app)
{
var listener = (HttpListener)app.Properties[typeof(HttpListener).FullName];
listener.AuthenticationSchemes = AuthenticationSchemes.Ntlm;
app.MapHubs(new HubConfiguration { EnableCrossDomain = true });
}
Если я закомментируюAuthenticationSchemes
линия тогда CORS работает (а ямы проверили все вэти инструкции). Я получаю ту же проблему, если использую другие схемы аутентификации, чем NTLM.
Используя Fiddler, чтобы проверить, чтопродолжается,без аутентификация включена. Я вижу необходимые заголовки CORS, возвращающиеся с сервера:
Access-Control-Allow-Credentials: правда
Access-Control-Allow-Origin: [мой сервер]
Однако, как только я включаю аутентификацию, я получаю ответ 401, в котором отсутствуют эти заголовки. Все запросы имеют необходимыеOrigin
заголовок.
Исследовав СигналРисходный код похоже, что заголовки устанавливаются, но, вероятно, с включенной аутентификациейHttpListener
отправляет первоначальный ответ 401, не нажимая этот код.
Поэтому я думаю, что мой вопрос: как мне получитьHttpListener
включитьAccess-Control-Allow-Origin
заголовок в его согласовании протоколов аутентификации?