AngularJS перехватывает http не через $ http провайдера - PullRequest
0 голосов
/ 03 июля 2018

У меня есть приложение AngularJS в Службах приложений Azure, защищенное Active Directory, и я пытаюсь создать соединение через websocket с помощью socket.io.

Проблема в том, что AD вызовет ответ перенаправления 302, за которым socket.io не следует, поэтому я хотел бы перехватить ответ и следовать ему, после чего соединения socket.io должны быть в порядке. Однако вызовы socket.io не осуществляются через провайдера $ http и поэтому не могут управляться с помощью обычного перехватчика.

Есть ли в любом случае подобрать их с помощью перехватчика или, возможно, промежуточного программного обеспечения? Мне не повезло, пробуя типичные промежуточные решения (например, app.use (...)).

Обратите внимание, что socket.io будет работать с опросом, но это может вызвать проблемы с производительностью моего приложения.

Используя следующий перехватчик, я не получаю вывод в журнал консоли, хотя вижу в Fiddler вызовы и 302 ответа:

app.factory('httpInterceptor', [function() {  
    var httpInterceptor = {
         request: function(req) {

            if (req.url.indexOf('socket.io') > -1) {
              console.log('REQUEST');
              console.log(req);              
            }
            return req;
         },

         requestError: function(reqerr) {
           console.log(reqerr);            
         },

         response: function(res) {   
            if ( res.status == 302 ) {
              console.log('RESPONSE');
              console.log(res); 
            }
            return res;
         },

         responseError: function(reserr) {      
           console.log(reserr);
         }
    };
    return httpInterceptor;
}]);

app.config(['$httpProvider', function($httpProvider) {  
    $httpProvider.interceptors.push('httpInterceptor');
}]);
...