Si vous utilisez Android, vous pouvez rencontrer l’erreur NET::ERR_CLEARTEXT_NOT_PERMITTED en essayant d’accéder à un site web ou à une application web. Cette erreur vous empêchera d’accéder au site, et elle est propre à ce système d’exploitation (OS).

Le message NET::ERR_CLEARTEXT_NOT_PERMITTED apparait parce que le site web utilise des informations en « texte clair » ou non cryptées. Heureusement, il existe des moyens de contourner cette erreur, que vous soyez un développeur Android ou que vous soyez responsable du site web en question.

Dans cet article, nous allons vous présenter le concept de Webview Android et discuter des causes de l’erreur NET::ERR_CLEARTEXT_NOT_PERMITTED. Ensuite, nous vous montrerons trois façons de dépanner l’erreur. Allons-y !

Qu’est-ce que Android Webview ?

Webview est une fonctionnalité du système d’exploitation Android qui permet aux applications d’afficher des pages web sans utiliser de navigateur. Cette fonction est courante dans les applications web, qui sont essentiellement des enveloppes permettant aux sites web d’être installés sur votre téléphone en tant qu’applications :

Android Webview
Android Webview

Bien que Webview vous permette d’accéder à des sites web via des applications, vous ne bénéficiez pas de la même quantité de fonctionnalités que sur un navigateur. Si vous naviguez sur le web, un navigateur tel que Chrome vous offrira toujours une meilleure expérience que Webview.

L’erreur NET::ERR_CLEARTEXT_NOT_PERMITTED est unique aux applications qui utilisent Webview dans l’OS Android. Vous ne rencontrerez pas cette erreur en utilisant un navigateur tel que Chrome. Si vous essayez d’accéder à un site web construit avec PHP via HTTP au lieu d’un canal sécurisé avec un navigateur ordinaire, vous risquez de rencontrer d’autres erreurs, telles que des avertissements « Not Secure ».

Que signifie NET::ERR_CLEARTEXT_NOT_PERMITTED ?

Si vous configurez Webview pour charger une page qui utilise HTTP ou contient d’autres types d’informations non cryptées, l’application renverra l’erreur suivante (nous utilisons un outil de développement d’applications Android pour vous la montrer) :

L'erreur NET::ERR_CLEARTEXT_NOT_PERMITTED
L’erreur NET::ERR_CLEARTEXT_NOT_PERMITTED

L’erreur ne signifie pas que le site web est inaccessible ou qu’il souffre de problèmes techniques. En fait, si vous essayez d’accéder à la même URL à l’aide d’un autre navigateur, vous ne rencontrerez peut-être aucun type d’erreur. Tout au plus, s’il s’agit d’une URL HTTP, vous verrez peut-être une icône indiquant que vous visitez un site web non sécurisé.

Comme l’erreur n’apparait qu’à l’intérieur des applications Android, elle peut amener les utilisateurs à croire qu’il y a un problème avec l’application elle-même. Cependant, il existe des moyens de contourner et de résoudre cette erreur, que vous soyez un développeur d’applications ou que vous soyez en charge du site web qui l’affiche. Si vous êtes un utilisateur final, vous ne pouvez pas faire grand-chose à part essayer d’accéder au site web à l’aide d’un navigateur.

Quelle est la cause du message NET::ERR_CLEARTEXT_NOT_PERMITTED ?

Par défaut, Android empêche les applications d’envoyer accidentellement des données non cryptées ou « texte clair » C’est la configuration par défaut des applications depuis Android 9.0.

Cette configuration s’applique aux applications qui utilisent Android Webview. C’est pourquoi l’erreur NET::ERR_CLEARTEXT_NOT_PERMITTED n’apparait que dans les applications et non dans les navigateurs au sein de l’OS Android.

Puisque la cause principale de cette erreur est l’information non cryptée, il existe différentes façons de la résoudre. Si vous êtes le développeur de l’application, vous pouvez modifier les fichiers de configuration qui permettent la prise en charge du texte clair.

Sinon, si vous êtes le propriétaire du site web, vous pouvez configurer toutes les pages du site pour qu’elles soient chargées en HTTPS. De cette façon, les utilisateurs n’auront pas à gérer des canaux non cryptés et les applications Android qui pointent vers votre site web ne renverront pas l’erreur NET::ERR_CLEARTEXT_NOT_PERMITTED.

Comment corriger l’erreur « NET::ERR_CLEARTEXT_NOT_PERMITTED » (3 façons)

Dans cette section, nous allons vous montrer comment résoudre l’erreur NET::ERR_CLEARTEXT_NOT_PERMITTED directement sur Android et depuis votre site web. Vous devrez avoir accès à un appareil Android pour dépanner l’erreur et vérifier si elle persiste.

1. Modifier AndroidManifest.xml

Chaque application Android comprend un fichier AndroidManifest.xml. Ce fichier contient des informations sur l’application qui sont requises par le système d’exploitation, le Google Play Store et certains outils de développement.

Le fichier AndroidManifest.xml comprend également des informations sur les autorisations des clés et indique si l’application peut charger du texte clair sur Webview ou non. Gardez à l’esprit que Google déconseille d’autoriser le texte clair en raison de problèmes de sécurité. Cette méthode de dépannage doit donc être une solution temporaire jusqu’à ce que le site web que vous chargez passe au trafic crypté.

Pour localiser et modifier AndroidManifest.xml (ce qui est similaire à la modification d’un fichier HTML), vous devez avoir accès au fichier .apk de l’application ou à la source du projet. Il existe plusieurs façons d’accéder aux fichiers source du projet d’une application. L’approche recommandée est d’utiliser Android Studio, qui est l’environnement de développement intégré (IDE) officiel pour les développeurs Android :

Android Studio
Android Studio

Une fois que vous ouvrez un projet dans Android Studio, vous serez en mesure de voir tous ses fichiers connexes à travers des répertoires standardisés. Le fichier AndroidManifest.xml sera situé dans le répertoire manifests :

AndroidManifest.xml dans le répertoire manifests
AndroidManifest.xml dans le répertoire manifests

Ouvrez le fichier et recherchez le sous-élément application, qui doit ressembler à ceci :

<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

</application>

Les variables à l’intérieur du sous-élément application peuvent changer, vous devrez donc rechercher les balises d’ouverture et de fermeture de l’application pour les identifier. Une fois que vous avez localisé les balises, collez la ligne de code suivante :

android:usesCleartextTraffic=”true”

Si la variable usesCleartexTraffic est déjà définie sur false, changez-la en true. Lorsque vous avez terminé, enregistrez les modifications dans AndroidManifest.xml et fermez le fichier, puis enregistrez les modifications dans le projet.

2. Autoriser le domaine à l’aide de network_security_config.xml

À partir d’Android 7.0, Google permet aux applications d’utiliser un fichier de configuration de sécurité réseau pour définir les autorisations pour des domaines et des applications spécifiques. En un mot, vous pouvez utiliser network_security_config.xml pour contourner les restrictions en clair pour un ou plusieurs domaines.

Cette approche est plus sure que l’activation de la prise en charge du texte clair pour l’ensemble de l’application (comme indiqué dans la méthode précédente). Toutefois, l’approche la plus sure consisterait à ne créer des liens vers des pages sécurisées qu’en utilisant Webview.

Idéalement, vous n’utiliserez qu’une seule de ces deux approches, car l’activation de la prise en charge du texte clair dans l’ensemble de l’application signifie que vous n’avez pas à autoriser des domaines spécifiques. Si vous souhaitez opter pour l’approche la plus sécurisée, suivez cette méthode.

Avec cela en tête, allons-y et créons un fichier network_security_config.xml pour votre application. Pour ce faire, ouvrez le projet d’application à l’aide d’Android Studio (comme indiqué dans la section précédente) et accédez au répertoire res.

Ce répertoire comprend tous les fichiers non codés d’un projet d’application, y compris les fichiers XML (à part AndroidManifest.xml), les images bitmap, etc. Créez un fichier appelé network_security_config.xml dans le répertoire res. Ensuite, ouvrez le fichier et ajoutez le code suivant :

<?xml version="1.0" encoding="utf-8"?>

<network-security-config>

<domain-config cleartextTrafficPermitted="true">

<domain includeSubdomains="true">yourwebsite.com</domain>

</domain-config>

</network-security-config>

Ce code spécifie qu’un seul domaine peut utiliser le texte clair. Vous pouvez ajouter d’autres éléments « domain includeSubdomains » pour autoriser des URL supplémentaires. Toutefois, pour des raisons de sécurité, nous vous recommandons de limiter cette configuration aux seuls domaines qui en ont strictement besoin.

Enregistrez les modifications apportées à network_security_config.xml et retournez dans le répertoire manifests . Pour que la configuration de la sécurité réseau fonctionne, vous devez à nouveau modifier AndroidManifest.xml.

Ouvrez le fichier et recherchez le sous-élément application . Ensuite, ajoutez la ligne de code suivante dans ses balises :

android:networkSecurityConfig="@xml/network_security_config"

Fermez AndroidManifest.xml après avoir enregistré les modifications apportées au fichier et c’est tout. Votre application devrait maintenant activer le texte clair pour le domaine que vous avez spécifié.

3. Forcer votre site web à utiliser HTTPS

La solution la plus sure à l’erreur NET::ERR_CLEARTEXT_NOT_PERMITTED est de configurer le site web qui renvoie le message d’erreur pour qu’il utilise HTTPS. De cette façon, toutes les données transmises vers et depuis le site web sont cryptées.

Dans le web moderne, il n’y a aucune raison de ne pas utiliser HTTPS pour votre site. Vous pouvez obtenir gratuitement un certificat SSL (Secure Sockets Layer) et le configurer sur votre site en quelques minutes. En fait, certains hébergeurs (comme Kinsta) peuvent s’occuper de l’ensemble du processus pour vous.

Lorsque vous vous inscrivez à un plan d’hébergement Kinsta, nous configurons automatiquement un certificat SSL pour votre site web. De plus, vous pouvez forcer votre site à se charger sur HTTPS depuis votre tableau de bord MyKinsta.

Pour cela, accédez à MyKinsta, sélectionnez un site web et allez dans l’onglet Outils. Recherchez l’option qui dit Forcer HTTPS et cliquez sur Activer :

Forcer HTTPS dans MyKinsta en un clic
Forcer HTTPS dans MyKinsta en un clic

Si vous n’utilisez pas Kinsta, vous pouvez soit modifier votre fichier WordPress .htaccess pour rediriger le trafic HTTP vers HTTPS, soit utiliser une extension qui fera le travail pour vous. Si vous optez pour cette dernière solution, nous vous recommandons d’utiliser l’extension Really Simple SSL.

Vous pouvez consulter cet article pour obtenir des instructions sur la façon de rediriger le trafic HTTP vers HTTPS sur Nginx et Apache, et sur l’utilisation de l’extension en question. Après avoir configuré votre site web pour utiliser HTTPS, vous ne devriez plus rencontrer l’erreur NET::ERR_CLEARTEXT_NOT_PERMITTED en utilisant Android Webview pour y naviguer.

Résumé

Si vous rencontrez l’erreur NET::ERR_CLEARTEXT_NOT_PERMITTED dans Android, cela signifie que l’application que vous utilisez tente d’accéder à une page web qui veut transmettre des informations en clair ou non sécurisées. Android empêche les applications de faire cela afin d’éviter de compromettre les données des utilisateurs.

Si vous êtes un utilisateur régulier, vous devrez utiliser un navigateur pour visiter le site web qui renvoie l’erreur. Toutefois, si vous êtes le développeur de l’application ou du site web, vous pouvez essayer de modifier le fichier AndroidManifest.xml, d’autoriser le domaine via le fichier network_security_config.xml et de forcer votre site Web à utiliser HTTPS.

Les utilisateurs de Kinsta sont beaucoup moins susceptibles de rencontrer l’erreur NET::ERR_CLEARTEXT_NOT_PERMITTED pour leurs propres sites web. C’est parce que nous configurons automatiquement des certificats SSL pour les nouveaux sites web et que nous vous permettons de rediriger le trafic via HTTPS en quelques clics. Explorez nos plans d’hébergement web ou nos plans d’hébergement d’applications pour trouver ce qui vous convient le mieux !