Als je Android gebruikt, kun je de fout NET::ERR_CLEARTEXT_NOT_PERMITTED tegenkomen als je een website of webapp probeert te openen. Deze fout blokkeert de toegang tot de site, en is uniek voor dit besturingssysteem (OS).

De NET::ERR_CLEARTEXT_NOT_PERMITTED melding verschijnt omdat de website “cleartext” of onversleutelde informatie gebruikt. Gelukkig zijn er manieren om deze fout te omzeilen, of je nu een Android developer bent of verantwoordelijk bent voor de website in kwestie.

In dit artikel laten we je kennismaken met het concept van Android Webview en bespreken we wat de oorzaak is van de NET::ERR_CLEARTEXT_NOT_PERMITTED fout. Daarna laten we je drie manieren zien om de fout op te lossen. Laten we aan de slag gaan!

Wat is Android Webview?

Webview is een feature in het Android OS waarmee apps webpagina’s kunnen weergeven zonder een browser te gebruiken. Deze feature is gebruikelijk in webapps, die in wezen wrappers zijn waarmee websites als apps op je telefoon kunnen worden geïnstalleerd:

Android Webview is niet ontworpen om een volledige browserervaring te bieden
Android Webview

Hoewel je met Webview websites via apps kunt openen, krijg je niet dezelfde hoeveelheid features  als in een browser. Als je op het web navigeert, zal een browser zoals Chrome altijd een betere ervaring bieden dan Webview.

De NET::ERR_CLEARTEXT_NOT_PERMITTED fout is uniek voor apps die Webview gebruiken in het Android OS. Je zult deze fout niet tegenkomen als je een browser zoals Chrome gebruikt. Als je met een gewone browser een door PHP gebouwde website probeert te benaderen via HTTP in plaats van een beveiligd kanaal, kun je andere fouten tegenkomen, zoals “Not Secure” waarschuwingen.

Wat betekent NET::ERR_CLEARTEXT_NOT_PERMITTED?

Als je Webview configureert om een pagina te laden die HTTP gebruikt of andere soorten niet-versleutelde informatie bevat, zal de app de volgende fout teruggeven (we gebruiken een Android app ontwikkeltool om het je te laten zien):

De "NET::ERR_CLEARTEXT_NOT_PERMITTED" fout voorkomt dat je toegang krijgt tot een onveilige website
De fout “NET::ERR_CLEARTEXT_NOT_PERMITTED”

De fout betekent niet dat de website ontoegankelijk is of aan technische problemen lijdt. Sterker nog, als je dezelfde URL probeert te benaderen met een andere browser, kom je misschien geen enkele fout tegen. Hooguit kun je, als het een HTTP URL is, een pictogram zien dat aangeeft dat je een onbeveiligde website bezoekt.

Omdat de fout alleen binnen Android apps verschijnt, kan het gebruikers doen geloven dat er een probleem is met de app zelf. Er zijn echter manieren om deze fout te omzeilen en op te lossen, of je nu een appdeveloper bent of de leiding hebt over de website die de fout weergeeft. Als je een eindgebruiker bent, kun je weinig anders doen dan proberen de website te openen met een browser.

Wat veroorzaakt het NET::ERR_CLEARTEXT_NOT_PERMITTED bericht?

Standaard voorkomt Android dat apps per ongeluk onversleutelde gegevens of “cleartext” versturen. Dit is de standaardconfiguratie voor apps sinds Android 9.0.

Deze configuratie geldt voor apps die Android Webview gebruiken. Daarom verschijnt de NET::ERR_CLEARTEXT_NOT_PERMITTED fout alleen binnen apps en niet in browsers binnen het Android OS.

Omdat de belangrijkste oorzaak achter de fout onversleutelde informatie is, zijn er verschillende manieren om de fout op te lossen. Als je de appdeveloper bent, kun je configuratiebestanden wijzigen die ondersteuning voor cleartext mogelijk maken.

Of, als je de eigenaar van de website bent, kun je alle pagina’s binnen de site configureren om over HTTPS te laden. Op die manier worden gebruikers niet geconfronteerd met onversleutelde kanalen, en Android apps die naar je website verwijzen zullen niet de NET::ERR_CLEARTEXT_NOT_PERMITTED foutmelding geven.

Zo los je de “NET::ERR_CLEARTEXT_NOT_PERMITTED” fout op (3 manieren)

In dit gedeelte laten we je zien hoe je de NET::ERR_CLEARTEXT_NOT_PERMITTED fout direct op Android en vanaf je website kunt oplossen. Je hebt toegang tot een Android apparaat nodig om de fout op te lossen en om te controleren of hij aanhoudt.

1. AndroidManifest.xml wijzigen

Elke Android applicatie bevat een AndroidManifest.xml bestand. Het bestand bevat informatie over de app die nodig is voor het OS, de Google Play Store en sommige ontwikkelaarstools.

Het AndroidManifest.xml bestand bevat ook informatie over sleutelpermissies en of de app cleartext mag laden via Webview of niet. Houd in gedachten dat Google afraadt om cleartext toe te staan vanwege beveiligingsproblemen, dus deze troubleshootingmethode zou een tijdelijke workaround moeten zijn totdat de website die je laadt, overschakelt op versleuteld verkeer.

Om AndroidManifest.xml te vinden en te bewerken (wat vergelijkbaar is met het bewerken van een HTML bestand), heb je toegang nodig tot het .apk bestand of de projectbron van de app. Er zijn verschillende manieren om toegang te krijgen tot de projectbronbestanden van een app. De aanbevolen aanpak is om Android Studio te gebruiken, de officiële Integrated Development Environment (IDE) voor Android developers:

Android Studio biedt de gemakkelijkste manier om toegang te krijgen tot Android appbestanden
Android Studio

Zodra je een project in Android Studio opent, kun je alle gerelateerde bestanden in gestandaardiseerde mappen zien. Het AndroidManifest.xml bestand bevindt zich in de manifests map:

Je kunt AndroidManifest.xml vinden in de map manifests
AndroidManifest.xml in de manifests map

Open het bestand en zoek naar het application subelement, dat er als volgt uit zou moeten zien:

<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

</application>

De variabelen binnen het application subelement kunnen veranderen, dus je zult moeten zoeken naar de openende en sluitende application tags om ze te identificeren. Zodra je de tags gevonden hebt, plak je de volgende regel code:

android:usesCleartextTraffic=”true”

Als er al een usesCleartexTraffic variabele is ingesteld op false, verander die dan in true. Als je klaar bent, sla je de wijzigingen op in AndroidManifest.xml en sluit je het bestand, waarna je de wijzigingen in het project opslaat.

2. Het domein toestaan met network_security_config.xml

Vanaf Android 7.0 stelt Google applicaties in staat om een netwerkbeveiligingsconfiguratiebestand te gebruiken om machtigingen in te stellen voor specifieke domeinen en apps. Simpel gesteld kun je network_security_config.xml gebruiken om cleartext beperkingen voor één of meer domeinen te omzeilen.

Deze aanpak is veiliger dan het inschakelen van cleartext ondersteuning voor de hele app (zoals in de vorige methode). De veiligste aanpak zou echter zijn om alleen met Webview naar beveiligde pagina’s te linken.

Idealiter gebruik je slechts één van deze twee benaderingen, omdat het inschakelen van cleartextondersteuning in een hele app betekent dat je geen lijst met specifieke domeinen hoeft toe te staan. Als je wilt kiezen voor de veiligere aanpak, volg dan deze methode.

Met dat in gedachten gaan we aan de slag en maken we een network_security_config.xml bestand voor je app. Open hiervoor het app project met Android Studio (zoals beschreven in de vorige sectie) en navigeer naar de res directory.

Deze map bevat alle niet-code bestanden voor een app project, inclusief XML bestanden (afgezien van AndroidManifest.xml), bitmap afbeeldingen, en meer. Maak een bestand genaamd network_security_config.xml binnen de res map. Open dan het bestand en voeg de volgende code toe:

<?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>

Deze code specificeert dat slechts één domein cleartext kan gebruiken. Je kunt nog meer “domain includeSubdomains” elementen toevoegen om extra URL’s toe te staan. Om veiligheidsredenen raden we je echter aan deze configuratie te beperken tot de domeinen die het strikt nodig hebben.

Sla de wijzigingen in network_security_config.xml op en keer terug naar de manifests map. Om de netwerkbeveiligingsconfiguratie te laten werken, moet je AndroidManifest.xml opnieuw bewerken.

Open het bestand en zoek naar het application subelement. Voeg dan de volgende regel code toe binnen zijn tags:

android:networkSecurityConfig="@xml/network_security_config"

Sluit AndroidManifest.xml na het opslaan van de wijzigingen in het bestand en dat is het. Je app zou nu cleartext moeten inschakelen voor het domein dat je hebt opgegeven.

3. Je website dwingen HTTPS te gebruiken

De veiligste oplossing voor de NET::ERR_CLEARTEXT_NOT_PERMITTED fout is om de website die de foutmelding geeft te configureren om HTTPS te gebruiken. Op deze manier worden alle gegevens die van en naar de website worden verzonden versleuteld.

In het moderne web is er geen enkele reden om geen HTTPS te gebruiken voor je website. Je kunt gratis een Secure Sockets Layer (SSL) certificaat krijgen en het in enkele minuten op je site instellen. Sommige webhosts (zoals Kinsta) kunnen zelfs het hele proces voor je verzorgen.

Als je je aanmeldt voor een Kinsta hostingpakket, configureren we automatisch een SSL certificaat voor je website. Bovendien kun je je website dwingen om over HTTPS te laden vanuit je MyKinsta dashboard.

Ga hiervoor naar MyKinsta, selecteer een website en ga naar het tabblad Tools. Zoek naar de optie die zegt HTTPS forceren en klik op Inschakelen:

Met MyKinsta kun je HTTPS verkeer forceren met slechts één klik
Forceer HTTPS in MyKinsta met één klik

Als je Kinsta niet gebruikt, kun je of je WordPress .htaccess bestand aanpassen om HTTP verkeer om te leiden via HTTPS of een plugin gebruiken die het werk voor je doet. Als je voor het laatste kiest, raden we je aan de Really Simple SSL plugin te gebruiken.

Je kunt dit artikel bekijken voor instructies over het omleiden van HTTP naar HTTPS op Nginx en Apache, en het gebruik van de betreffende plugin. Nadat je je website geconfigureerd hebt om HTTPS te gebruiken, zou je niet meer tegen de NET::ERR_CLEARTEXT_NOT_PERMITTED fout moeten aanlopen tijdens het gebruik van Android Webview terwijl je er doorheen navigeert.

Samenvatting

Als je in Android de fout NET::ERR_CLEARTEXT_NOT_PERMITTED tegenkomt, dan probeert de app die je gebruikt een webpagina te openen die cleartext of onbeveiligde informatie wil verzenden. Android blokkeert apps om dit te doen om te voorkomen dat gebruikersgegevens in gevaar komen.

Als je een gewone gebruiker bent, moet je een browser gebruiken om de website te bezoeken die de foutmelding geeft. Als je echter de developer achter de app of de website bent, kun je proberen de AndroidManifest.xml aan te passen, het domein via network_security_config.xml toe te staan en je website te dwingen HTTPS te gebruiken.

Kinsta gebruikers lopen veel minder kans op de fout NET::ERR_CLEARTEXT_NOT_PERMITTED voor hun eigen websites. Dat komt omdat we voor nieuwe websites automatisch SSL certificaten instellen en je met een paar simpele klikken verkeer via HTTPS kunt omleiden. Bekijk onze webhostingabonnementen of onze Applicatie Hosting pakketten om te zien wat het beste bij je past!