Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS未通过$http提供程序拦截http_Angularjs_Socket.io_Azure Active Directory_Azure Web App Service - Fatal编程技术网

AngularJS未通过$http提供程序拦截http

AngularJS未通过$http提供程序拦截http,angularjs,socket.io,azure-active-directory,azure-web-app-service,Angularjs,Socket.io,Azure Active Directory,Azure Web App Service,我在受Active Directory保护的Azure应用程序服务上有一个AngularJS应用程序,我正在尝试使用socket.io通过websocket创建连接 问题是AD将导致一个302重定向响应,socket.io不遵循该响应,因此我希望截获该响应并遵循该响应,然后socket.io连接将正常。但是,socket.io调用不是通过$http提供程序进行的,因此无法使用典型的侦听器进行管理 是否有任何方法可以通过拦截器或中间件获取这些信息?我没有尝试过典型的中间件解决方案(例如app.us

我在受Active Directory保护的Azure应用程序服务上有一个AngularJS应用程序,我正在尝试使用socket.io通过websocket创建连接

问题是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');
}]);

302重定向由浏览器处理,XHRAPI不接收。我明白了。如果我将302中的位置标题内容复制到浏览器中,我将从socket.io服务器获得输出。之后,套接字将在应用程序中连接,并且工作正常(我假设,因为AD现在认为会话已通过身份验证)。但是,socket.io似乎对重定向后返回的内容不满意:拒绝从“”执行脚本,因为它的MIME类型(“text/html”)不可执行,并且启用了严格的MIME类型检查。