Se você está usando um dispositivo Android, é possível que se depare com o erro NET::ERR_CLEARTEXT_NOT_PERMITTED ao tentar acessar um site ou aplicativo da internet. Esse erro impede o acesso ao site e é exclusivo deste sistema operacional (SO).
A mensagem NET::ERR_CLEARTEXT_NOT_PERMITTED surge quando o site utiliza informações “em texto simples” ou não criptografadas. Felizmente, existem maneiras de contornar esse erro, tanto para desenvolvedor Android quanto para responsáveis pelo site em questão.
Neste artigo, vamos introduzir o conceito do Android WebView e discutir o que causa o erro NET::ERR_CLEARTEXT_NOT_PERMITTED. Em seguida, apresentaremos três maneiras de solucionar o problema. Vamos começar!
O que é o Android Webview?
Webview é um recurso do sistema operacional Android que permite que aplicativos exibam páginas da internet sem usar um navegador. Este recurso é comum em aplicativos web, que são essencialmente wrappers que permitem que sites sejam instalados no seu telefone como aplicativos:
Embora o Webview permita que você acesse sites via aplicativos, você não obtém a mesma quantidade de recursos que você obtém em um navegador. Se você estiver navegando na internet, um navegador como o Chrome sempre proporcionará uma experiência melhor do que o Webview.
O erro NET::ERR_CLEARTEXT_NOT_PERMITTED é exclusivo para aplicativos que usam o Webview no sistema operacional Android. Você não encontrará este erro ao usar um navegador como o Chrome. Se você estiver tentando acessar um site construído em PHP sobre HTTP ao invés de um canal seguro com um navegador normal, você pode encontrar outros erros, como avisos “Não Seguro”.
O que significa NET::ERR_CLEARTEXT_NOT_PERMITTED?
Se você configurar o Webview para carregar uma página que usa HTTP ou contém outros tipos de informações não criptografadas, o aplicativo retornará o seguinte erro (estamos usando uma ferramenta de desenvolvimento de aplicativo Android para exemplificar):
O erro não significa que o site esteja inacessível ou sofra de problemas técnicos. Na verdade, se você tentar acessar a mesma URL usando outro navegador, você pode não encontrar nenhum tipo de erro. No máximo, se for um URL HTTP, você pode ver um ícone que indica que você está visitando um site não seguro.
Como o erro só aparece dentro dos aplicativos Android, ele pode levar os usuários a acreditarem que existe um problema com o aplicativo em si. Entretanto, existem maneiras de contornar e solucionar esse erro, quer você seja um desenvolvedor de aplicativos ou você esteja encarregado do site que está exibindo-o. Se você é um usuário final, não há muito o que você pode fazer além de tentar acessar o site usando um navegador.
O que causa o erro NET::ERR_CLEARTEXT_NOT_PERMITTED?
O Android evita que aplicativos enviem dados não criptografados ou em “texto simples” para evitar possíveis problemas de segurança. Essa tem sido a configuração padrão para aplicativos desde o Android 9.0.
Essa configuração se aplica aos aplicativos que usam o Android WebView. É por isso que o erro NET::ERR_CLEARTEXT_NOT_PERMITTED só aparece dentro de aplicativos e não nos navegadores padrão do sistema operacional Android.
Dado que a causa principal desse erro é a transmissão de informações não criptografadas, há diferentes maneiras de solucioná-lo. Se você é o desenvolvedor do aplicativo, pode modificar arquivos de configuração para permitir o uso de “texto simples”.
Alternativamente, se você é o proprietário do site, pode configurar todas as páginas do site para carregar através de HTTPS. Dessa forma, os usuários não terão que lidar com canais não criptografados, e os aplicativos Android que acessam seu site não exibirão o erro NET::ERR_CLEARTEXT_NOT_PERMITTED.
Como corrigir o erro “NET::ERR_CLEARTEXT_NOT_PERMITTED” (3 Maneiras)
Nesta seção, mostraremos como corrigir o erro NET::ERR_CLEARTEXT_NOT_PERMITTED diretamente no Android e no seu site. Você precisará ter acesso a um dispositivo Android para solucionar o erro e verificar se ele persiste.
1. Modifique o arquivo AndroidManifest.xml
Cada aplicativo Android inclui um arquivo AndroidManifest.xml. Esse arquivo contém informações sobre o aplicativo necessárias para o sistema operacional, a Google Play Store e algumas ferramentas de desenvolvedor.
O arquivo AndroidManifest.xml também contém informações sobre permissões-chave e se o aplicativo pode carregar texto simples via Webview ou não. Lembre-se de que a Google desaconselha permitir texto simples devido a questões de segurança, portanto, esse método de solução de problemas deve ser um paliativo temporário até que o site que você está carregando migre para o tráfego criptografado.
Para localizar e editar o arquivo AndroidManifest.xml (semelhante à edição de um arquivo HTML), você precisará de acesso ao arquivo .apk do aplicativo ou ao código-fonte do projeto. Existem várias maneiras de acessar os arquivos de código-fonte de um aplicativo. A abordagem recomendada é usar o Android Studio, que é o Ambiente de Desenvolvimento Integrado (IDE) oficial para desenvolvedores Android:
Assim que você abrir um projeto no Android Studio, você será capaz de ver todos os seus arquivos relacionados por meio de diretórios padronizados. O arquivo AndroidManifest.xml estará localizado no diretório de manifests:
Abra o arquivo e procure pelo subelemento do aplicativo, que deve se parecer com isso:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
</application>
As variáveis no subelemento do aplicativo podem mudar, então você precisará procurar pelas tags de abertura e fechamento do aplicativo para identificá-las. Assim que você localizar as tags, cole na seguinte linha de código:
android:usesCleartextTraffic=”true”
Se já existe uma variável usesCleartexTraffic definida como false, mude-a para true. Quando terminar, salve as alterações no AndroidManifest.xml e feche o arquivo, depois salve as alterações no projeto.
2. Permita listar o domínio usando network_security_config.xml
A partir do Android 7.0, o Google permite que aplicativos usem um arquivo de configuração de segurança de rede para definir permissões para domínios e aplicativos específicos. Em poucas palavras, você pode usar network_security_config.xml para contornar as restrições de cleartext para um ou mais domínios.
Esta abordagem é mais segura do que permitir o suporte de texto claro em todo o aplicativo (como mostrado no método anterior). Entretanto, a abordagem mais segura seria linkar apenas para páginas seguras usando o Webview.
Idealmente, você usará apenas uma dessas duas abordagens, já que permitir suporte de texto claro através de todo um aplicativo significa que você não precisa permitir a lista de domínios específicos. Se você quiser optar por uma abordagem mais segura, siga este método.
Com isso em mente, criaremos um arquivo network_security_config.xml para o seu aplicativo. Para fazer isso, abra o projeto do aplicativo usando o Android Studio (como descrito na seção anterior) e navegue até o diretório res.
Este diretório inclui todos os arquivos não codificados para um projeto de aplicativo, incluindo arquivos XML (além do AndroidManifest.xml), imagens bitmap, e muito mais. Crie um arquivo chamado network_security_config.xml no diretório res. Então, abra o arquivo e adicione o seguinte código:
<?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>
Este código especifica que apenas um domínio pode usar cleartext. Você pode adicionar mais elementos “domain includeSubdomains” para permitir a listagem de URLs adicionais. Entretanto, por razões de segurança, recomendamos que você limite esta configuração apenas aos domínios que estritamente precisam dela.
Salve as alterações no network_security_config.xml e volte para o diretório manifests. Para que a configuração de segurança da rede funcione, você precisará editar o AndroidManifest.xml novamente.
Abra o arquivo e procure pelo subelemento do aplicativo. Então, adicione a seguinte linha de código dentro de suas tags:
android:networkSecurityConfig="@xml/network_security_config"
Feche o AndroidManifest.xml após salvar as alterações no arquivo e pronto. Seu aplicativo deve agora habilitar o cleartext para o domínio que você especificou.
3. Use a função Forçar HTTPS
A solução mais segura para o erro NET::ERR_CLEARTEXT_NOT_PERMITTED é configurar o site que retorna a mensagem de erro para usar HTTPS. Desta forma, todos os dados transmitidos de e para o site são criptografados.
Na internet moderna, não há razão para não usar HTTPS em seu site. Você pode obter um certificado Secure Sockets Layer (SSL) gratuitamente e configurá-lo no seu site em questão de minutos. Na verdade, alguns provedores de hospedagem de sites (como a Kinsta) podem cuidar de todo o processo para você.
Quando você se inscreve em um plano de hospedagem na Kinsta, configuramos automaticamente um certificado SSL para o seu site. Além disso, você pode forçar o seu site a carregar sobre HTTPS no seu painel MyKinsta.
Para fazer isso, acesse o MyKinsta, selecione um site e vá para a aba Ferramentas. Procure a opção que diz Forçar HTTPS e clique em Habilitar:
Se você não estiver usando Kinsta, você pode modificar seu arquivo .htaccess do WordPress para redirecionar o tráfego HTTP através de HTTPS ou usar um plugin que fará o trabalho por você. Se você optar pelo último, recomendamos o uso do plugin Really Simple SSL.
Você pode conferir este artigo para instruções sobre como redirecionar HTTP para HTTPS no Nginx e Apache, e usando o plugin em questão. Após configurar seu site para usar HTTPS, você não deve mais receber o erro NET::ERR_CLEARTEXT_NOT_PERMITTED enquanto estiver usando o Android Webview para navegar nele.
Resumo
Se você se deparar com o erro NET::ERR_CLEARTEXT_NOT_PERMITTED no Android, significa que o aplicativo que você está usando está tentando acessar uma página da internet que quer transmitir informações de texto claro ou sem segurança. O Android bloqueia os aplicativos de fazer isso para evitar comprometer os dados do usuário.
Se você é um usuário regular, você precisará usar um navegador para visitar o site que está retornando o erro. Entretanto, se você é o desenvolvedor por trás do aplicativo ou do site, você pode tentar modificar o arquivo AndroidManifest.xml, permitindo listar o domínio através do network_security_config.xml, e forçar seu site a usar HTTPS.
Os usuários Kinsta têm muito menos probabilidade de encontrar o erro NET::ERR_CLEARTEXT_NOT_PERMITTED em seus próprios sites. Isso porque configuramos automaticamente certificados SSL para novos sites e permitimos que você redirecione o tráfego através do HTTPS com alguns simples cliques. Explore nossos planos de hospedagem de sites ou nossos planos de hospedagem de aplicativos para encontrar a melhor opção!