J'ai essayé de demander cela précédemment, acheter n'a pas de vraies réponses, et ont maintenant été en difficulté depuis plus d'un mois.Ionic 3 appels Cordova ajax échouer sur Windows 10 (UWP)
Je ne parviens tout simplement pas à faire fonctionner mes appels ajax sur une application Ionic 3 Cordova conçue pour Windows 10 UWP. Ils peuvent accéder à localhost, mais pas à des connexions externes.
L'application fonctionne correctement sur Android et iOS. J'essaye de tester ceci localement sur ma machine de dev. J'utilise un certificat (acheté) pour signer l'application, installer ce certificat, construire l'application pour Windows, et suis capable d'ouvrir le CordovaApp.Windows10_1.0.1.1_x86.appxupload
construit, puis double-cliquez sur le fichier CordovaApp.Windows10_1.0.1.1_x86.appx
à installer, qui se termine avec succès. L'installation indique que l'application a besoin d'un accès Internet.
Dans le config.xml
, je les balises suivantes, comme suggéré ailleurs ...
<allow-navigation href="*" />
<access origin="*" />
Cependant, quand je lance, l'appel http.get retourne juste 0
sans autre information. Je peux courir dans Visual Studio, et regarder l'objet d'erreur retourné, et obtenir aucune autre information, à part ce retour 0
.
J'ai couru Fiddler, a permis le déchiffrement https comme expliqué here, mais tout ce que je vois dans l'en-tête de réponse est
HTTP/1.0 200 Connection Established
FiddlerGateway: Direct
StartTime: 13:44:21.686
Connection: close
Le résultat dans la vue principale montre en fait 200
, donc je ne pense pas est de me montrer quelque chose de réel.
Je suis complètement perdu. Je n'ai pas d'autre endroit où chercher. Que pourrais-je manquer? Dois-je être en mesure d'utiliser ajax externe sur un ordinateur Windows 10, lorsque j'ai téléchargé l'application comme ici? Je n'ai pas encore essayé du magasin, car je ne veux pas télécharger jusqu'à ce que je sais que cela fonctionne.
Toutes les suggestions désespérément bien accueillies. Sûrement quelqu'un a eu une application Ionic 3 accédant à un travail ajax externe?
Merci à l'avance pour toute aide
[UPDATE 1]
Si je lance l'application sur la même machine, juste en utilisant ionique servir (il fonctionne seulement dans le navigateur plutôt que hébergé dans l'UWP), les appels ajax fonctionnent également bien.
[UPDATE 2]
J'ai maintenant créé une application Cordova en utilisant le modèle Visual Studio, afin de prendre toutes les autres cadres de l'équation.
je JavaScript vanille pour faire mon appel de repos ...
document.addEventListener('deviceready', callUrl, false);
function callUrl() {
console.log('callUrl');
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://myserveraddress.com/myapp/testroute');
xhr.send(null);
xhr.onreadystatechange = function() {
var DONE = 4; // readyState 4 means the request is done.
var OK = 200; // status 200 is a successful return.
if (xhr.readyState === DONE) {
if (xhr.status === OK)
console.log(xhr.responseText);
} else {
console.log('Error: ' + xhr.status);
}
}
};
je lance ce dans le débogueur, et même ici, je reçois une erreur (code d'état 0).
Une autre chose que je remarque quand j'ouvre le paquet build et regardez le fichier cordova_plugins.js
..
Mon ionique app a ce qui suit ...
cordova.define('cordova/plugin_list', function(require, exports, module) {
module.exports = [
{
"id": "cordova-plugin-console.logger",
"file": "plugins/cordova-plugin-console/www/logger.js",
"pluginId": "cordova-plugin-console",
"clobbers": [
"cordova.logger"
]
},
{
"id": "cordova-plugin-console.console",
"file": "plugins/cordova-plugin-console/www/console-via-logger.js",
"pluginId": "cordova-plugin-console",
"clobbers": [
"console"
]
},
{
"id": "cordova-plugin-device.device",
"file": "plugins/cordova-plugin-device/www/device.js",
"pluginId": "cordova-plugin-device",
"clobbers": [
"device"
]
},
{
"id": "cordova-plugin-device.DeviceProxy",
"file": "plugins/cordova-plugin-device/src/windows/DeviceProxy.js",
"pluginId": "cordova-plugin-device",
"merges": [
""
]
},
{
"id": "cordova-plugin-splashscreen.SplashScreen",
"file": "plugins/cordova-plugin-splashscreen/www/splashscreen.js",
"pluginId": "cordova-plugin-splashscreen",
"clobbers": [
"navigator.splashscreen"
]
},
{
"id": "cordova-plugin-splashscreen.SplashScreenProxy",
"file": "plugins/cordova-plugin-splashscreen/www/windows/SplashScreenProxy.js",
"pluginId": "cordova-plugin-splashscreen",
"runs": true
},
{
"id": "cordova-plugin-statusbar.statusbar",
"file": "plugins/cordova-plugin-statusbar/www/statusbar.js",
"pluginId": "cordova-plugin-statusbar",
"clobbers": [
"window.StatusBar"
]
},
{
"id": "cordova-plugin-statusbar.StatusBarProxy",
"file": "plugins/cordova-plugin-statusbar/src/windows/StatusBarProxy.js",
"pluginId": "cordova-plugin-statusbar",
"runs": true
},
{
"id": "ionic-plugin-keyboard.KeyboardProxy",
"file": "plugins/ionic-plugin-keyboard/src/windows/KeyboardProxy.js",
"pluginId": "ionic-plugin-keyboard",
"clobbers": [
"cordova.plugins.Keyboard"
],
"runs": true
}
];
module.exports.metadata =
// TOP OF METADATA
{
"cordova-plugin-console": "1.0.5",
"cordova-plugin-device": "1.1.4",
"cordova-plugin-splashscreen": "4.0.3",
"cordova-plugin-statusbar": "2.2.2",
"cordova-plugin-whitelist": "1.3.1",
"ionic-plugin-keyboard": "2.2.1"
};
// BOTTOM OF METADATA
});
Maintenant, je remarque tous les plug-in dans le module.exports.metadata
a également une entrée dans le module.exports
SAUF pour cordova-plugin-whitelist
!
Si j'ouvre le même dossier pour l'application Corvoda créée en VS, je vois ce qui suit ...
cordova.define('cordova/plugin_list', function(require, exports, module) {
module.exports = [];
module.exports.metadata =
// TOP OF METADATA
{
"cordova-plugin-whitelist": "1.2.2"
};
// BOTTOM OF METADATA
});
Donc, cela n'a rien d'autre pour le plug-in whitelist ainsi
Y aurait-il quelque chose manque ici? Ce plugin de liste blanche ne peut-il pas être installé correctement?
Après un long moment, j'ai fait ce que je devrais avoir longtemps avant, et testé l'application sur un autre réseau, et, ça a bien fonctionné. De chez moi, ou si l'appareil est connecté au réseau cellulaire, pas de problème. Seuls les problèmes sont sur le réseau de travail. Comme c'est un peu différent, j'ai créé un [post] séparé (https://stackoverflow.com/questions/46480462/how-to-troubleshoot-local-windows-uwp-cordova-networking-issues) pour cela " nouveau "problème, qui peut être plus lié à l'instrafructure par opposition à l'application – peterc