所有 $http 请求都返回 -1
All $http requests are returning -1
我正在开发一个使用 ionic 的应用程序。就在今天,我的所有 $http
请求开始失败,返回 -1 状态代码。当我 运行 与 ionic serve
、ionic run browser
和 ionic 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 请求大小后,所有工作都按预期进行。
我正在开发一个使用 ionic 的应用程序。就在今天,我的所有 $http
请求开始失败,返回 -1 状态代码。当我 运行 与 ionic serve
、ionic run browser
和 ionic 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 请求大小后,所有工作都按预期进行。