173 votes

Pourquoi vois-je des erreurs net:: ERR_CLEARTEXT_NOT_PERMITTED après la mise à niveau vers Cordova Android 8?

Après la mise à niveau vers Cordova Android 8.0, je rencontre des erreurs net::ERR_CLEARTEXT_NOT_PERMITTED lorsque j'essaie de me connecter à des cibles http://.

Pourquoi cela et comment puis-je résoudre ce problème?

289voto

Oliver Salzburg Points 2455

Le niveau API par défaut dans la plateforme Android de Cordova a été mis à jour. Sur un appareil Android 9, la communication en texte clair est désormais désactivée par défaut.

Pour autoriser à nouveau la communication en texte clair, définissez le android:usesCleartextTraffic sur votre balise application à true:

Comme indiqué dans les commentaires, si vous n'avez pas défini l'espace de noms XML android précédemment, vous recevrez une erreur : préfixe non lié lors de la compilation. Cela indique que vous devez l'ajouter à votre balise widget dans le même config.xml, comme ceci :

44 votes

J'ai rencontré une erreur (error: unbound prefix.) en essayant de construire mon application Cordova. La solution a été d'ajouter dans mon fichier config.xml, dans mon élément racine l'attribut xmlns:android="http://schemas.android.com/apk/res/android

0 votes

@Der Hochstapler Pouvez-vous ajouter le commentaire de apiagets à votre réponse?

1 votes

@MichaelB Tout le monde peut modifier les réponses et est invité à le faire. Mais, bien sûr, je le ferai.

53voto

zardilior Points 374

Il y a deux choses à corriger dans config.xml Donc la bonne réponse consiste à ajouter le xmls:android:

en plus de modifier la configuration pour permettre:

Si l'étape 1 est évitée, l'erreur suivante apparaîtra: préfixe non lié.

1 votes

Erreur de syntaxe des résultats dans le fichier config.xml

49voto

Ashutosh Points 1418

Le texte en clair ici représente des informations non cryptées. Depuis Android 9, il est recommandé que les applications appellent des APIs HTTPS pour s'assurer qu'il n'y a pas d'écoutes indiscrètes.

Cependant, si nous avons encore besoin d'appeler des APIs HTTP, nous pouvons faire ce qui suit:

Plateforme: Ionic 4

Créez un fichier nommé: network_security_config.xml sous project-root/resources/android/xml

Ajoutez les lignes suivantes:

     ip-or-domain-name

Maintenant dans project-root/config.xml, mettez à jour les lignes suivantes:

    ... autres déclarations...

Cela devrait fonctionner maintenant.

1 votes

Merci mec, ça a fonctionné pour moi pour Ionic 4. J'ai spécifié le nom de domaine example.com et ça a marché. J'ai aussi obtenu de l'aide à partir de ce developer.android.com/training/articles/security-config

0 votes

Pourquoi le "

5 votes

Cela fonctionne mais j'ai besoin d'ajouter cette ligne dans le fichier config.xml avant la balise edit-config: . Merci!

37voto

Edvan Souza Points 536

Pour résoudre le problème, il existe une autre option. dans le fichier resources/android/xml/network_security_config.xml. insérer :

        localhost
        192.168.7.213:8733

Dans mon cas, j´utilise une adresse IP alors base-config est nécessaire, mais si vous avez un domaine. ajoutez simplement le domaine.

0 votes

Alors que toutes les solutions acceptées étaient également nécessaires, cette réponse était essentielle pour le problème auquel je faisais face.

0 votes

Merci! Je utilise également une adresse IP au lieu d'un nom de domaine et votre réponse correspond parfaitement!

34voto

topherPedersen Points 250

J'ai moi-même rencontré ce problème aujourd'hui et j'ai trouvé un plugin vraiment astucieux qui vous évitera la peine d'essayer d'autoriser manuellement le trafic en clair dans Android 9+ pour votre application Apache Cordova. Il vous suffit d'installer cordova-plugin-cleartext et le plugin devrait se charger de tout ce qui se passe en arrière-plan sur Android pour vous.

$ cordova plugin add cordova-plugin-cleartext
$ cordova prepare
$ cordova run android

1 votes

Pour les autres à la recherche de la réponse. J'ai continué à rencontrer d'autres erreurs en appliquant les correctifs de configuration, mais cela a fonctionné tout de suite. Merci Topher

0 votes

Fonctionne pour moi. Merci!

0 votes

Pour ceux qui utilisent Ionic, n'oubliez pas de taper "ionic cordova prepare"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X