Om du använder Android så kan du stöta på felet NET::ERR_CLEARTEXT_NOT_PERMITTED när du försöker komma åt en webbplats eller webbapplikation. Som ett resultat av felet så blockeras du från att komma åt webbplatsen. Felet är unikt för detta operativsystem.
Meddelandet NET::ERR_CLEARTEXT_NOT_PERMITTED visas eftersom webbplatsen använder ”klartext” eller okrypterad information. Det finns dock lyckligtvis ett sätt att kringgå det här felet, oavsett om du är Android-utvecklare eller ansvarig för webbplatsen i fråga.
I den här artikeln så introducerar vi dig till konceptet Android Webview och diskuterar vad som orsakar felet NET::ERR_CLEARTEXT_NOT_PERMITTED. Vi visar dig sedan tre sätt att felsöka felet. Då sätter vi igång!
Vad är Android Webview?
Webview är en funktion i Android OS som gör det möjligt för appar att visa webbsidor utan att använda en webbläsare. Den här funktionen är vanlig i webbappar, som i huvudsak är inkapslingar som gör det möjligt att installera webbplatser på telefonen som appar:
Webview gör det visserligen möjligt att komma åt webbplatser via appar. Men du får inte samma mängd funktioner som i en webbläsare. Om du navigerar på webben så kommer en webbläsare som Chrome alltid att ge en bättre upplevelse än Webview.
Felet NET::ERR_CLEARTEXT_NOT_PERMITTED är unikt för appar som använder Webview i Android OS. Du kommer inte att stöta på det här felet när du använder en webbläsare som Chrome. Om du försöker att komma åt en PHP-byggd webbplats via HTTP i stället för en säker kanal med en vanlig webbläsare så kan du stöta på andra fel, exempelvis ”Not Secure”-varningar.
Vad betyder NET::ERR_CLEARTEXT_NOT_PERMITTED?
Konfigurerar du Webview för att ladda en sida som använder HTTP eller innehåller andra typer av okrypterad information? Då kommer appen att returnera följande fel (vi använder ett utvecklingsverktyg för Android-appar för att visa det för dig):
Felet betyder inte att webbplatsen är otillgänglig eller lider av tekniska problem. Om du försöker att komma åt samma webbadress med en annan webbläsare så stöter du kanske inte på något fel. Om det är en HTTP-webbadress så kan du se en ikon högst upp som visar att du besöker en osäker webbplats.
Eftersom felet endast visas i Android-appar så kan det få användare att tro att det är ett problem med själva appen. Det finns dock sätt att kringgå och felsöka det här felet. Detta gäller oavsett om du är apputvecklare eller ansvarig för webbplatsen som visar felet. Om du är en slutanvändare så finns det inte så mycket som du kan göra förutom att försöka komma åt webbplatsen med en webbläsare.
Vad orsakar meddelandet NET::ERR_CLEARTEXT_NOT_PERMITTED?
Som standard så förhindrar Android att appar oavsiktligt skickar okrypterad data eller ”klartext” Detta har varit standardkonfigurationen för appar sedan Android 9.0.
Den här konfigurationen gäller för appar som använder Android Webview. Det är därför som felet NET::ERR_CLEARTEXT_NOT_PERMITTED endast visas i appar och inte i webbläsare i Android OS.
Huvudorsaken bakom felet är okrypterad information. Det finns därför olika sätt att felsöka det. Om du är en apputvecklare så kan du ändra konfigurationsfiler som aktiverar stöd för klartext.
Om du är webbplatsägare så kan du även konfigurera alla sidor på webbplatsen så att de laddas över HTTPS. På så sätt behöver användarna inte hantera okrypterade kanaler. Android-appar som riktas mot din webbplats returnerar därmed inte felet NET::ERR_CLEARTEXT_NOT_PERMITTED.
Så här åtgärdar du felet ”NET::ERR_CLEARTEXT_NOT_PERMITTED” (3 sätt)
I det här avsnittet så visar vi hur du löser felet NET::ERR_CLEARTEXT_NOT_PERMITTED direkt på Android och från din webbplats. Du behöver ha tillgång till en Android-enhet för att felsöka felet och för att kontrollera om det kvarstår.
1. Ändra AndroidManifest.xml
Varje Android-program innehåller en AndroidManifest.xml-fil. Filen innehåller information om programmet som krävs av operativsystemet, Google Play Store och vissa utvecklarverktyg.
Filen AndroidManifest.xml innehåller även information om nyckelbehörigheter och om appen kan ladda in klartext via Webview eller inte. Tänk på att Google avråder från att tillåta klartext på grund av säkerhetsproblem. Den här felsökningsmetoden bör därför vara en tillfällig lösning tills webbplatsen som du laddar övergår till krypterad trafik.
För att hitta och redigera AndroidManifest.xml (vilket liknar att redigera en HTML-fil) behöver du ha tillgång till appens .apk-fil eller projektkälla. Det finns flera sätt att komma åt en apps projektkällfiler. Det rekommenderade tillvägagångssättet är att använda Android Studio. Det är den officiella integrerade utvecklingsmiljön (IDE) för Android-utvecklare:
När du öppnar ett projekt i Android Studio så kan du se alla dess relaterade filer i standardiserade kataloger. Filen AndroidManifest.xml kommer att finnas i katalogen manifests:
Öppna filen och sök efter underelementet application, som ska se ut så här:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
</application>
Variablerna i under-elementet application kan ändras, så du måste leta efter de inledande och avslutande application-taggarna för att identifiera dem. När du har hittat taggarna så klistrar du in följande kodrad:
android:usesCleartextTraffic=”true”
Om variabeln usesCleartexTraffic redan är inställd på false ändrar du den till true. När du är klar sparar du ändringarna i AndroidManifest.xml, stänger filen och sparar sedan ändringarna i projektet.
2. Tillåt domänen med hjälp av network_security_config.xml
Från och med Android 7.0 och framåt så gör Google det möjligt för applikationer att använda en konfigurationsfil för nätverkssäkerhet. Som ett resultat så kan de ställa in behörigheter för specifika domäner och appar. Du kan med andra ord använda network_security_config.xml för att kringgå klartext-begränsningar för en eller flera domäner.
Det här tillvägagångssättet är säkrare än att aktivera stöd för klartext i hela appen (som visas i föregående metod). Det säkraste tillvägagångssättet är dock att endast länka till säkra sidor med hjälp av Webview.
I idealfallet så använder du bara ett av dessa två tillvägagångssätt. Genom att aktivera klartextstöd i hela appen så behöver du ju inte tillåta specifika domäner. Om du vill välja det säkrare tillvägagångssättet så följer du den här metoden.
Med detta i åtanke så går vi vidare och skapar en network_security_config.xml-fil för din app. För att göra detta så öppnar du app-projektet med Android Studio (enligt beskrivningen i föregående avsnitt) och navigerar till res-katalogen.
Den här katalogen innehåller alla icke-kodfiler för ett app-projekt, inklusive XML-filer (förutom AndroidManifest.xml), bitmappbilder med mera. Skapa en fil som heter network_security_config.xml i res-katalogen. Öppna sedan filen och lägg till följande kod:
<?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>
Den här koden anger att endast en domän kan använda klartext. Du kan lägga till ytterligare ”domain includeSubdomains” -element för att tillåta ytterligare webbadresser. Av säkerhetsskäl så rekommenderar vi dock att du begränsar den här konfigurationen till de domäner som verkligen behöver den.
Spara ändringarna i network_security_config.xml och återvänd till manifest-katalogen. För att konfigurationen för nätverkssäkerhet ska fungera så måste du redigera AndroidManifest.xml igen.
Öppna filen och leta efter underelementet application. Lägg sedan till följande kodrad inom dess taggar:
android:networkSecurityConfig="@xml/network_security_config"
Stäng AndroidManifest.xml efter att du har sparat ändringarna i filen. Din app bör nu aktivera klartext för den domän som du angav.
3. Tvinga din webbplats att använda HTTPS
Den säkraste lösningen på felet NET::ERR_CLEARTEXT_NOT_PERMITTED är att konfigurera webbplatsen som returnerar felmeddelandet så att den använder HTTPS. Som ett resultat så krypteras all data som överförs till och från webbplatsen.
På den moderna webben så finns det ingen anledning att inte använda HTTPS för din webbplats. Du kan få ett SSL-certifikat (Secure Sockets Layer) kostnadsfritt och konfigurera det på din webbplats på några minuter. Faktum är att vissa hosting-leverantörer (t.ex. Kinsta) kan ta hand om hela processen åt dig.
När du registrerar dig för ett hosting-system hos Kinsta så konfigurerar vi automatiskt ett SSL-certifikat för din webbplats. Du kan dessutom tvinga din webbplats att laddas via HTTPS från din MyKinsta-instrumentpanel.
För att göra detta så går du in på MyKinsta, väljer en webbplats och går till fliken Verktyg. Leta efter alternativet Tvinga HTTPS och klicka på Aktivera:
Om du inte använder Kinsta så kan du antingen ändra din WordPress .htaccess-fil för att omdirigera HTTP-trafik till HTTPS eller använda ett plugin som gör jobbet åt dig. Om du väljer det sistnämnda så rekommenderar vi att du använder pluginet Really Simple SSL.
Du kan läsa den här artikeln för instruktioner om hur du omdirigerar HTTP till HTTPS på Nginx och Apache, och hur du använder pluginet i fråga. När du har konfigurerat din webbplats för att använda HTTPS så bör du inte längre stöta på felet NET::ERR_CLEARTEXT_NOT_PERMITTED när du använder Android Webview för att navigera på den.
Sammanfattning
Om du stöter på felet NET::ERR_CLEARTEXT_NOT_PERMITTED i Android så försöker appen som du använder komma åt en webbsida som vill överföra information i klartext eller osäker information. Android blockerar appar från att göra detta för att undvika att användardata äventyras.
Om du är en vanlig användare så måste du använda en webbläsare för att besöka webbplatsen som returnerar felet. Men om du är utvecklaren bakom appen eller webbplatsen så kan du försöka att ändra AndroidManifest.xml, tillåta domänen via network_security_config.xml och tvinga webbplatsen att använda HTTPS.
Kinsta-användare är mycket mindre benägna att stöta på felet NET::ERR_CLEARTEXT_NOT_PERMITTED för sina egna webbplatser. Detta beror på att vi konfigurerar SSL-certifikat för nya webbplatser automatiskt och gör det möjligt för dig att omdirigera trafik via HTTPS med några enkla klick. Utforska våra hosting-planer eller våra applikationshosting-planer för att hitta det som passar bäst för dig!