Я пытаюсь сделать запрос веб-API, используя $ http, но он возвращает мне код состояния -1, ответ об ошибке после выполнения запроса. Это происходит только в версии выпуска сборки приложения. Если я запускаю приложение в отладочной версии, я могу сделать веб-запрос.
Та же проблема, с которой я столкнусь, если буду использовать Restangular для веб-запросов.
Я создал образец проекта Cordova, и ниже приведен его код.
(function () {
var app = angular.module('testApp', []);
})();
(function () {
"use strict";
var app = angular.module('testApp', []);
app.controller("testCtrl", [ '$http', function ($http) {
alert("test Request");
var validatePromise = $http({
method: 'GET', url: 'https://SampleURL.list'
});
validatePromise.then(function (success) {
alert("success");
}, function (error) {
alert("error");
alert(JSON.stringify(error));
});
}]);
} )();
Ниже приведен код HTML.
<meta charset = "utf-8">
<meta http-equiv = "Content-Security-Policy"
content = "default-src * 'self'
'unsafe-inline' 'unsafe-eval' http://* https://* data: cdvfile://* content://*;">
<meta name = "viewport" content = "initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<meta name = "format-detection" content = "telephone=no">
<link rel = "stylesheet" type = "text/css" href = "css/index.css">
<link href = "css/ionic.min.css" rel = "stylesheet">
<script src = "scripts/ionic.bundle.min.js"></script>
<script src = "scripts/index.js"></script>
<title>BlankCordovaApp3</title>
</head>
<body ng-controller = "testCtrl">
<ion-nav-bar class = "bar-positive nav-title-slide-ios7" align
title = "center">
<ion-nav-back-button class = "button-icon ion-arrow-left-c">
</ion-nav-back-button>
</ion-nav-bar>
<!-- The title of the ion-view will be shown on the navbar -->
<ion-view title = "Page 1" hide-back-button = "true">
<ion-content class = "padding">
<button class = "button">
Default
</button>
</ion-content>
</ion-view>
</body>
Эта проблема возникает только в сборке Release и для версии Android ниже 4.4 (Kitkat).
@georgeawg Я добавил связанный с CORS метатег в файл index.html, но все равно получаю ту же ошибку. В приведенном выше html-коде я включил метатег Content-Security-Policy. Я что-то упускаю?
Также эта проблема возникает только в версии KitKat для Android. Все вышеперечисленные версии работают отлично.
Состояние
-1часто указывает на проблему CORS.