Wenn du Android verwendest, kann es sein, dass du beim Versuch, auf eine Website oder Web-App zuzugreifen, auf den Fehler NET::ERR_CLEARTEXT_NOT_PERMITTED stößt. Dieser Fehler blockiert den Zugriff auf die Website und ist nur für dieses Betriebssystem (OS) möglich.
Die Meldung NET::ERR_CLEARTEXT_NOT_PERMITTED erscheint, weil die Website „Klartext“ oder unverschlüsselte Informationen verwendet. Zum Glück gibt es Möglichkeiten, diesen Fehler zu umgehen, egal ob du ein Android-Entwickler bist oder für die betreffende Website verantwortlich bist.
In diesem Artikel führen wir dich in das Konzept von Android Webview ein und erklären, was den NET::ERR_CLEARTEXT_NOT_PERMITTED-Fehler verursacht. Dann zeigen wir dir drei Möglichkeiten, wie du den Fehler beheben kannst. Los geht’s!
Was ist Android Webview?
Webview ist eine Funktion des Android-Betriebssystems, mit der Apps Webseiten anzeigen können, ohne einen Browser zu verwenden. Diese Funktion kommt häufig in Web-Apps vor, die im Grunde genommen Wrapper sind, mit denen Webseiten als Apps auf deinem Telefon installiert werden können:
Obwohl du mit Webview über Apps auf Webseiten zugreifen kannst, hast du nicht den gleichen Funktionsumfang wie bei einem Browser. Wenn du im Internet navigierst, bietet ein Browser wie Chrome immer ein besseres Erlebnis als Webview.
Der Fehler NET::ERR_CLEARTEXT_NOT_PERMITTED tritt nur bei Apps auf, die Webview im Android-Betriebssystem verwenden. Bei der Verwendung eines Browsers wie Chrome wirst du diesen Fehler nicht finden. Wenn du versuchst, mit einem normalen Browser über HTTP statt über einen sicheren Kanal auf eine PHP-Website zuzugreifen, kann es sein, dass du auf andere Fehler stößt, z. B. auf die Warnung „Nicht sicher“.
Was bedeutet NET::ERR_CLEARTEXT_NOT_PERMITTED?
Wenn du Webview so konfigurierst, dass eine Seite geladen wird, die HTTP verwendet oder andere Arten von unverschlüsselten Informationen enthält, gibt die App den folgenden Fehler zurück (wir verwenden ein Android-App-Entwicklungstool, um ihn dir zu zeigen):
Der Fehler bedeutet nicht, dass die Website nicht erreichbar ist oder technische Probleme hat. Wenn du versuchst, dieselbe URL mit einem anderen Browser aufzurufen, kann es sogar sein, dass du auf keinen Fehler stößt. Wenn es sich um eine HTTP-URL handelt, kann es höchstens sein, dass du ein Symbol siehst, das dir anzeigt, dass du eine ungesicherte Website besuchst.
Da der Fehler nur innerhalb von Android-Apps auftritt, kann er zu der Annahme führen, dass ein Problem mit der App selbst vorliegt. Es gibt jedoch Möglichkeiten, diesen Fehler zu umgehen und zu beheben, egal ob du ein App-Entwickler bist oder für die Website verantwortlich bist, die den Fehler anzeigt. Wenn du ein Endnutzer bist, kannst du nur wenig tun, außer zu versuchen, die Website mit einem Browser aufzurufen.
Wodurch wird die Meldung NET::ERR_CLEARTEXT_NOT_PERMITTED verursacht?
In der Standardeinstellung verhindert Android, dass Apps versehentlich unverschlüsselte Daten oder „Klartext“ senden. Dies ist seit Android 9.0 die Standardkonfiguration für Apps.
Diese Konfiguration gilt für Apps, die Android Webview verwenden. Deshalb erscheint der Fehler NET::ERR_CLEARTEXT_NOT_PERMITTED nur in Apps und nicht in Browsern innerhalb des Android-Betriebssystems.
Da die Hauptursache für den Fehler unverschlüsselte Informationen sind, gibt es verschiedene Möglichkeiten, ihn zu beheben. Wenn du der App-Entwickler bist, kannst du die Konfigurationsdateien ändern, um die Unterstützung für Klartext zu aktivieren.
Alternativ kannst du als Website-Besitzer alle Seiten der Website so konfigurieren, dass sie über HTTPS geladen werden. Auf diese Weise müssen sich die Nutzer nicht mit unverschlüsselten Kanälen herumschlagen und Android-Apps, die auf deine Website verweisen, geben nicht den Fehler NET::ERR_CLEARTEXT_NOT_PERMITTED zurück.
So behebst du den „NET::ERR_CLEARTEXT_NOT_PERMITTED“-Fehler (3 Methoden)
In diesem Abschnitt zeigen wir dir, wie du den NET::ERR_CLEARTEXT_NOT_PERMITTED-Fehler direkt auf Android und von deiner Website aus beheben kannst. Du brauchst Zugang zu einem Android-Gerät, um den Fehler zu beheben und zu überprüfen, ob er weiterhin besteht.
1. AndroidManifest.xml ändern
Jede Android-Anwendung enthält eine AndroidManifest.xml datei. Die Datei enthält Informationen über die App, die für das Betriebssystem, den Google Play Store und einige Entwickler-Tools erforderlich sind.
Die Datei AndroidManifest.xml enthält auch Informationen über Schlüsselberechtigungen und darüber, ob die App Klartext über Webview laden kann oder nicht. Denke daran, dass Google aus Sicherheitsgründen davon abrät, Klartext zuzulassen. Daher sollte diese Methode zur Fehlerbehebung nur eine vorübergehende Lösung sein, bis die Website, die du lädst, auf verschlüsselten Datenverkehr umstellt.
Um die Datei AndroidManifest.xml zu finden und zu bearbeiten (ähnlich wie beim Bearbeiten einer HTML-Datei), brauchst du Zugriff auf die .apk-Datei oder die Projektquelle der App. Es gibt verschiedene Möglichkeiten, wie du auf die Projektquelldateien einer App zugreifen kannst. Die empfohlene Methode ist die Verwendung von Android Studio, der offiziellen integrierten Entwicklungsumgebung (IDE) für Android-Entwickler:
Sobald du ein Projekt in Android Studio öffnest, kannst du alle zugehörigen Dateien in standardisierten Verzeichnissen sehen. Die Datei AndroidManifest.xml befindet sich im Verzeichnis manifests:
Öffne die Datei und suche nach dem Unterelement application, das wie folgt aussehen sollte:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
</application>
Die Variablen innerhalb des Anwendungsunterelements können sich ändern, daher musst du nach den öffnenden und schließenden Anwendungs-Tags suchen, um sie zu identifizieren. Sobald du die Tags gefunden hast, füge die folgende Codezeile ein:
android:usesCleartextTraffic=”true”
Wenn die Variable usesCleartexTraffic bereits auf false gesetzt ist, ändere sie in true. Wenn du fertig bist, speichere die Änderungen in der Datei AndroidManifest.xml, schließe die Datei und speichere die Änderungen im Projekt.
2. Erlaube die Domain mit network_security_config.xml
Ab Android 7.0 ermöglicht Google den Anwendungen, eine Netzwerksicherheitskonfigurationsdatei zu verwenden, um Berechtigungen für bestimmte Domains und Apps festzulegen. Kurz gesagt, kannst du die Datei network_security_config.xml verwenden, um die Klartextbeschränkungen für eine oder mehrere Domains zu umgehen.
Dieser Ansatz ist sicherer als die Aktivierung der Klartextunterstützung für die gesamte App (wie in der vorherigen Methode gezeigt). Am sichersten ist es jedoch, wenn du mit Webview nur auf sichere Seiten verlinkst.
Im Idealfall verwendest du nur eine dieser beiden Methoden, denn wenn du die Klartextunterstützung für die gesamte App aktivierst, musst du keine bestimmten Domains zulassen. Wenn du dich für den sichereren Ansatz entscheidest, befolge diese Methode.
Legen wir also eine network_security_config.xml-Datei für deine App an. Dazu öffnest du das App-Projekt mit Android Studio (wie im vorherigen Abschnitt beschrieben) und navigierst zum Verzeichnis res.
Dieses Verzeichnis enthält alle Nicht-Code-Dateien für ein App-Projekt, einschließlich XML-Dateien (abgesehen von AndroidManifest.xml), Bitmap-Bilder und mehr. Erstelle eine Datei namens network_security_config.xml im res-Verzeichnis. Öffne dann die Datei und füge den folgenden Code hinzu:
<?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>
Dieser Code legt fest, dass nur eine Domain Cleartext verwenden kann. Du kannst weitere „domain include Subdomains“ Elemente hinzufügen, um weitere URLs zuzulassen. Aus Sicherheitsgründen empfehlen wir dir jedoch, diese Konfiguration nur auf die Domains zu beschränken, die sie unbedingt benötigen.
Speichere die Änderungen in der Datei network_security_config.xml und kehre in das Verzeichnis manifests zurück. Damit die Netzwerksicherheitskonfiguration funktioniert, musst du die Datei AndroidManifest.xml erneut bearbeiten.
Öffne die Datei und suche nach dem Unterelement application. Füge dann die folgende Codezeile in die Tags ein:
android:networkSecurityConfig="@xml/network_security_config"
Schließe AndroidManifest.xml, nachdem du die Änderungen in der Datei gespeichert hast, und das war’s. Deine App sollte jetzt Cleartext für die angegebene Domain aktivieren.
3. Zwinge deine Website, HTTPS zu verwenden
Die sicherste Lösung für den NET::ERR_CLEARTEXT_NOT_PERMITTED-Fehler besteht darin, die Website, die die Fehlermeldung zurückgibt, so zu konfigurieren, dass sie HTTPS verwendet. Auf diese Weise werden alle Daten, die zu und von der Website übertragen werden, verschlüsselt.
Im modernen Web gibt es keinen Grund, HTTPS nicht für deine Website zu verwenden. Du kannst ein kostenloses Secure Sockets Layer (SSL)-Zertifikat erhalten und es in wenigen Minuten auf deiner Website einrichten. Einige Webhoster (z. B. Kinsta) können sogar den gesamten Prozess für dich übernehmen.
Wenn du dich für ein Kinsta-Hostingpaket anmeldest, konfigurieren wir automatisch ein SSL-Zertifikat für deine Website. Außerdem kannst du in deinem MyKinsta-Dashboard festlegen, dass deine Website über HTTPS geladen wird.
Dazu rufst du MyKinsta auf, wählst eine Website aus und gehst auf die Registerkarte Extras. Suche nach der Option HTTPS erzwingen und klicke auf Aktivieren:
Wenn du Kinsta nicht nutzt, kannst du entweder deine WordPress .htaccess-Datei so ändern, dass der HTTP-Verkehr über HTTPS umgeleitet wird, oder ein Plugin verwenden, das die Arbeit für dich übernimmt. Wenn du dich für Letzteres entscheidest, empfehlen wir dir das Really Simple SSL-Plugin.
In diesem Artikel findest du eine Anleitung für die Umleitung von HTTP zu HTTPS auf Nginx und Apache sowie für die Verwendung des betreffenden Plugins. Nachdem du deine Website für die Verwendung von HTTPS konfiguriert hast, sollte der Fehler NET::ERR_CLEARTEXT_NOT_PERMITTED beim Navigieren mit Android Webview nicht mehr auftreten.
Zusammenfassung
Wenn du in Android auf den Fehler NET::ERR_CLEARTEXT_NOT_PERMITTED stößt, versucht die von dir verwendete App, auf eine Webseite zuzugreifen, die Klartext oder ungesicherte Informationen übertragen will. Android hindert Apps daran, dies zu tun, um eine Gefährdung der Nutzerdaten zu vermeiden.
Wenn du ein normaler Nutzer bist, musst du einen Browser verwenden, um die Website zu besuchen, die den Fehler zurückgibt. Wenn du jedoch der Entwickler der App oder der Website bist, kannst du versuchen, die AndroidManifest.xml zu ändern, die Domain in der network_security_config.xml zuzulassen und deine Website zu zwingen, HTTPS zu verwenden.
Kinsta-Benutzer/innen stoßen bei ihren eigenen Websites viel seltener auf den Fehler NET::ERR_CLEARTEXT_NOT_PERMITTED. Das liegt daran, dass wir für neue Websites automatisch SSL-Zertifikate einrichten und es dir ermöglichen, den Datenverkehr mit ein paar einfachen Klicks über HTTPS umzuleiten. Erkunde unsere Webhosting-Pläne oder unsere Applikations-Hosting-Pläne, um dein passendes Angebot zu finden!