Salut,

J'ai un petit soucis. J'ai cree plusieurs applications qui utilise le service $http de AngularJS. Cela fonctionne tres bien jusqu'a ce que je face une mise a jour de cordova.

Je pense que pour des questions de securite, cordova bloque maintenant par defaut les requetes. Donc cette instructions dans le fichier de conf ne fonctionne plus:

<access origin="*" />

Je crois qu'il faut maintenant utiliser leur plugin whitelist, que l'on retrouve maintenant par defaut dans nos projets cordova.

https://github.com/apache/cordova-plugin-whitelist

En regardant la doc, ils disent qu'il faut faire :

<allow-navigation href="*" />

Mais ca ne fonctionne pas chez moi....
Ou me suis je trompé ?

Si cela peu vous aider voici mon code, c'est un code classique :

$http.get('http://example.com')
.success(function(response) {
// Sur le navigateur + Avant la mise a jour je tombe ici 
  alert("Yes");
  alert(response);
})
.error(function (response){
// Apres la mise a jour je tombe ici
  alert("Damned");
  alert(response);
});

Ce code fonctionne tres bien avant ma mise a jour de Cordova. Il fonctionne toujours sur mon Mac au bureau (car je n'ai pas encore mis a jour Cordova).

Sur mon navigateur ca fonctionne egalement, c'est bien Cordova qui bloque et je ne sais pas comment corriger ce probleme...

Suis je le seul à avoir ce problème ?

merci

PS: J'ai cette erreur :

ERROR whitelist rejesction: url='http://example.com'

4 réponses


Je ne code pas sous Cordova, mais j'ai trouvé ça : http://stackoverflow.com/questions/29305109/meteor-js-cordova-error-error-whitelist-rejection

Si ça peut aider... ^^

Merci @PallMallShow,
Je regarderai ca de plus pres.

Le soucis est que ca fonctionne tres bien au boulot (OUF !) mais pas chez moi.
Les deux machines sur lequel je travaille sont sur Mac.
Avant ca fonctionne pareil, mais depuis la mise a jour (cordova, ionic, nodeJs) j'ai cette erreur uniquement chez moi
et donc j'ai peur que ca arrive egalement au boulot.
En effet, j'aimerai trouver la cause (et comment corriger ca) avant que ce probleme surviennent egalement au boulot.

(donc j'ai un peu peur que meme backuper mes projets ne me garantisse pas ce bug magnifique,
surtout que lorsque Apple met a jour Xcode, cordova nous oblige parfois a nous mettre a jour
mise a jour responsable de mon probleme).

Bref, merci en tout cas.

Salut,

Deprecation Notice
The $http legacy promise methods success and error have been deprecated. Use the standard then method instead. If $httpProvider.useLegacyPromiseExtensions is set to false then these methods will throw $http/legacy error.

https://docs.angularjs.org/api/ng/service/$http

Bonjour @shinix et merci pour ta reponse,

Le probleme ne se situe pas au niveau de AngularJs car meme en essayant de telecharger une image avec du code natif (Objective C sur iOS et Java sur Android), ca ne fonctionne plus (sur mon ordi maison) alors qu'avant oui.
Maintenant, j'ai une erreur de type :

3 = FileTransferError.CONNECTION_ERR
ou
1 = FileTransferError.FILE_NOT_FOUND_ERR

(je suis au boulot la donc je ne me rappelle plus si c'est 1 ou 3)

Chose que je n'avais pas avant (et que je n'ai pas sur mon ordi bureau).
Et la seule difference entre ordi maison et ordi bureau est : j'ai mis a jour cordova, node JS, ionic sur mon ordi maison

------- EDIT

Bon ce que je redoute est arrive.
J'ai ete oblige de faire une mise a jour de Xcode sur mon ordi bureau et maintenant cordova bloque les ressources exterieur de l'application.

A mon avis, si vous essayez les tuto de grafikar:

  • creer une application avec apache cordova
  • compiler sur Android
  • compiler sur iOS
  • Ionic Framework

votre application ne fonctionnera pas car elle utilise une ressource externe : api.openweathermap.org/data/2.5/forecast/daily~

A priori, il faut jouer avec config.xml et la meta "Content-Security-Policy"

===> Lorsque je trouverai quoi ecrire exactement, je vous le partagerai

La j'essaie de pouvoir relire ("re" car ca fonctionne encore ce matin) les donnees contenu dans ce fichier : http://bit-test.xsrv.jp/jonathan/videos/okome/data2.php

---- EDIT

C'est bon j'ai compris (on m'a repondu sur un autre forums)
Visiblement Apache Cordova ne supporte pas encore la nouvelle version de iOS.
Du coup, ce simple code ne fonctionne pas encore :

<img style="width:100%;" src="http://www.diana.dti.ne.jp/~june1/perfume/perfume_voce.jpg" />

Pourquoi ?
Parce ce que c'est une ressource externe a l'application.