所有 $http 请求都返回 -1

All $http requests are returning -1

我正在开发一个使用 ionic 的应用程序。就在今天,我的所有 $http 请求开始失败,返回 -1 状态代码。当我 运行 与 ionic serveionic run browserionic emulate ios 时发生这种情况。

这些 $http 请求也不一定是远程的。无法加载 www/template 内的 HTML 文件。任何有关调试的帮助将不胜感激!

更多细节: 当 运行ning ionic serve 时,它加载 index.html 就好了,它加载了我的 app.js。这反过来会设置一个 HTTP 拦截器并使用 $stateProvider:

加载状态
angular.module('starter', ['ionic', 'ngCordova', 'ionic.service.core', 'starter.controllers', 'setup.controllers', 'settings.controllers', 'history.controllers', 'graph.controller'])
...
    .config(function ($stateProvider, $urlRouterProvider, $httpProvider, $analyticsProvider) {
        ...
        $httpProvider.interceptors.push(['$q', '$location', function ($q, $location) {
            return {
                'request': function (config) {
                    // Setup authorization token...
                    return config;
                },  
                'responseError': function (response) {
                    if (response.status === 401 || response.status === 403) {
                        $location.path('/login');
                    }   
                    return $q.reject(response);
                }   
            };  
        }]);
        ...
            $stateProvider.state('login', {
            cache: false,
            url: '/login',
            templateUrl: 'templates/login.html',
            controller: 'LoginCtrl'
        })  

            // setup an abstract state for the tabs directive
            .state('tab', {
                url: '/tab',
                abstract: true,
                cache: false,
                controller: 'TabCtrl',
                templateUrl: 'templates/tabs.html'
            })
...

我的浏览器 javascript 控制台充满了这些错误:

ionic.bundle.js:25000 GET http://localhost:8100/templates/tabs.html net::ERR_EMPTY_RESPONSE(anonymous function) @ ionic.bundle.js:25000sendReq @ ionic.bundle.js:24793serverRequest @ ionic.bundle.js:24503processQueue @ ionic.bundle.js:29127(anonymous function) @ ionic.bundle.js:29143$eval @ ionic.bundle.js:30395$digest @ ionic.bundle.js:30211$apply @ ionic.bundle.js:30503(anonymous function) @ ionic.bundle.js:32332completeOutstandingRequest @ ionic.bundle.js:19194(anonymous function) @ ionic.bundle.js:19470
ionic.bundle.js:25000 GET http://localhost:8100/templates/login.html net::ERR_EMPTY_RESPONSE(anonymous function) @ ionic.bundle.js:25000sendReq @ ionic.bundle.js:24793serverRequest @ ionic.bundle.js:24503processQueue @ ionic.bundle.js:29127(anonymous function) @ ionic.bundle.js:29143$eval @ ionic.bundle.js:30395$digest @ ionic.bundle.js:30211$apply @ ionic.bundle.js:30503(anonymous function) @ ionic.bundle.js:32332completeOutstandingRequest @ ionic.bundle.js:19194(anonymous function) @ ionic.bundle.js:19470

当我在拦截器中放置一个断点时,它会拦截对这些本地 HTML 文件的请求并将响应状态代码显示为 -1。

更新 1: 它变得越来越陌生......如果我清除本地存储,它就可以......一次。我使用本地存储来存储登录的用户帐户,因此当我清除存储并刷新时,它会成功加载页面。登录后,所有请求都停止工作。

我花了很多时间排查这个问题,终于找到了问题所在。 在我的例子中,我有一个拦截器,它向每个请求添加 Bearer Authorization 数据,在这个 Bearer 变小之前,所有的工作都非常惊人,但是我犯了设计错误,并在问题开始后向它添加了大量数据。 在最小化 Bearer 请求大小后,所有工作都按预期进行。