Android kullanıyorsanız, bir web sitesine veya web uygulamasına erişmeye çalışırken NET::ERR_CLEARTEXT_NOT_PERMITTED hatasıyla karşılaşabilirsiniz. Bu hata siteye erişiminizi engeller ve bu İşletim Sistemine (OS) özgüdür.
NET::ERR_CLEARTEXT_NOT_PERMITTED mesajı, web sitesi “cleartext” veya şifrelenmemiş bilgi kullandığı için görünür. Neyse ki, ister bir Android geliştiricisi olun ister söz konusu web sitesinden sorumlu olun, bu hatayı atlatmanın yolları vardır.
Bu makalede, size Android Webview kavramını tanıtacağız ve NET::ERR_CLEARTEXT_NOT_PERMITTED hatasına neyin neden olduğunu tartışacağız. Ardından, hatayı gidermenin üç yolunu göstereceğiz. Hadi başlayalım!
İçindekiler:
- Android Webview Nedir?
- NET::ERR_CLEARTEXT_NOT_PERMITTED Ne Anlama Gelir?
- NET::ERR_CLEARTEXT_NOT_PERMITTED İletisine Ne Sebep Olur?
- “NET::ERR_CLEARTEXT_NOT_PERMITTED” Hatası Nasıl Giderilir (3 Yol)
- 1. AndroidManifest.xml dosyasını değiştirin
- 2. network_security_config.xml Kullanarak Etki Alanına İzin Verin
- 3. Web Sitenizi HTTPS Kullanmaya Zorlayın
- Özet
Android Webview Nedir?
Webview Android işletim sisteminde uygulamaların tarayıcı kullanmadan web sayfalarını görüntülemesini sağlayan bir özelliktir. Bu özellik, esasen web sitelerinin telefonunuza uygulama olarak yüklenmesini sağlayan sarmalayıcılar olan web uygulamalarında yaygındır:
Webview, uygulamalar aracılığıyla web sitelerine erişmenizi sağlasa da, bir tarayıcıda elde ettiğiniz özelliklerin aynısını elde edemezsiniz. Web’de geziniyorsanız, Chrome gibi bir tarayıcı her zaman Webview’den daha iyi bir deneyim sağlayacaktır.
NET::ERR_CLEARTEXT_NOT_PERMITTED hatası Android işletim sisteminde Webview kullanan uygulamalara özgüdür. Chrome gibi bir tarayıcı kullanırken bu hatayla karşılaşmazsınız. PHP tarafından oluşturulmuş bir web sitesine normal bir tarayıcıyla güvenli bir kanal yerine HTTP üzerinden erişmeye çalışıyorsanız, “Güvenli Değil” uyarıları gibi başka hatalarla karşılaşabilirsiniz.
NET::ERR_CLEARTEXT_NOT_PERMITTED Ne Anlama Gelir?
Webview’i HTTP kullanan veya diğer şifrelenmemiş bilgi türlerini içeren bir sayfayı yükleyecek şekilde yapılandırırsanız, uygulama aşağıdaki hatayı verecektir (bunu size göstermek için bir Android uygulama geliştirme aracı kullanıyoruz):
Hata, web sitesine erişilemediği veya teknik sorunlardan muzdarip olduğu anlamına gelmez. Aslında, aynı URL’ye başka bir tarayıcı kullanarak erişmeyi denerseniz, herhangi bir hatayla karşılaşmayabilirsiniz. En fazla, eğer bu bir HTTP URL’si ise, güvenli olmayan bir web sitesini ziyaret ettiğinizi gösteren bir simge görebilirsiniz.
Hata yalnızca Android uygulamalarında göründüğünden, kullanıcıların uygulamanın kendisinde bir sorun olduğunu düşünmelerine neden olabilir. Ancak, ister bir uygulama geliştiricisi olun ister hatayı görüntüleyen web sitesinden sorumlu olun, bu hatayı atlamanın ve gidermenin yolları vardır. Son kullanıcı iseniz, web sitesine bir tarayıcı kullanarak erişmeyi denemek dışında yapabileceğiniz çok az şey vardır.
NET::ERR_CLEARTEXT_NOT_PERMITTED İletisine Ne Sebep Olur?
Android varsayılan olarak uygulamaların yanlışlıkla şifrelenmemiş veri ya da “cleartext” göndermesini engeller. Bu, Android 9.0’dan bu yana uygulamalar için varsayılan yapılandırma olmuştur.
Bu yapılandırma Android Webview kullanan uygulamalar için geçerlidir. Bu nedenle NET::ERR_CLEARTEXT_NOT_PERMITTED hatası Android işletim sistemi içindeki tarayıcılarda değil, yalnızca uygulamalarda görünür.
Hatanın arkasındaki ana neden şifrelenmemiş bilgiler olduğundan, sorunu gidermenin farklı yolları vardır. Uygulama geliştiricisiyseniz, cleartext desteğini etkinleştiren yapılandırma dosyalarını değiştirebilirsiniz.
Alternatif olarak, web sitesi sahibiyseniz, sitedeki tüm sayfaları HTTPS üzerinden yüklenecek şekilde yapılandırabilirsiniz. Bu şekilde, kullanıcılar şifrelenmemiş kanallarla uğraşmak zorunda kalmayacak ve web sitenize yönlendiren Android uygulamaları NET::ERR_CLEARTEXT_NOT_PERMITTED hatasını döndürmeyecektir.
“NET::ERR_CLEARTEXT_NOT_PERMITTED” Hatası Nasıl Giderilir (3 Yol)
Bu bölümde, NET::ERR_CLEARTEXT_NOT_PERMITTED hatasını doğrudan Android’de ve web sitenizden nasıl gidereceğinizi göstereceğiz. Hatayı gidermek ve devam edip etmediğini kontrol etmek için bir Android cihaza erişmeniz gerekir.
1. AndroidManifest.xml dosyasını değiştirin
Her Android uygulaması bir AndroidManifest.xml dosyası. Dosya, işletim sistemi, Google Play Store ve bazı geliştirici araçları tarafından gerekli olan uygulama hakkında bilgiler içerir.
AndroidManifest.xml dosyası ayrıca anahtar izinleri ve uygulamanın Webview üzerinden açık metin yükleyip yükleyemeyeceği hakkında bilgiler içerir. Google’ın güvenlik sorunları nedeniyle açık metne izin verilmemesini tavsiye ettiğini unutmayın, bu nedenle bu sorun giderme yöntemi, yüklediğiniz web sitesi şifreli trafiğe geçene kadar geçici bir çözüm olmalıdır.
AndroidManifest.xml dosyasını bulmak ve düzenlemek için (bir HTML dosyasını düzenlemeye benzer), uygulamanın .apk dosyasına veya proje kaynağına erişmeniz gerekir. Bir uygulamanın proje kaynak dosyalarına erişmenin birkaç yolu vardır. Önerilen yaklaşım Android StudioAndroid geliştiricileri için resmi Entegre Geliştirme Ortamı (IDE):
Bir kez Android Studio’da bir proje açındizinlerinde ilgili tüm dosyaları görebileceksiniz. AndroidManifest.xml dosyası manifests dizininin içinde yer alacaktır:
Dosyayı açın ve uygulama alt elemanıbu şekilde görünmelidir:
<application
android:icon=”@drawable/ic_launcher”
android:label=”@string/app_name”
android:theme=”@style/AppTheme” >
</application>
Uygulama alt öğesinin içindeki değişkenler değişebilir, bu nedenle bunları tanımlamak için açılış ve kapanış uygulama etiketlerini aramanız gerekir. Etiketleri bulduğunuzda, aşağıdaki kod satırını yapıştırın:
android:usesCleartextTraffic=”true”
Zaten false olarak ayarlanmış bir usesCleartexTraffic değişkeni varsa, bunu true olarak değiştirin. İşiniz bittiğinde, değişiklikleri AndroidManifest.xml dosyasına kaydedin ve dosyayı kapatın, ardından değişiklikleri projeye kaydedin.
2. network_security_config.xml Kullanarak Etki Alanına İzin Verin
Google, Android 7.0 ve sonraki sürümlerden itibaren uygulamaların bir ağ güvenliği yapılandırma dosyası belirli etki alanları ve uygulamalar için izinleri ayarlamak için. Özetle, bir veya daha fazla etki alanı için cleartext kısıtlamalarını atlamak için network_security_config.xml kullanabilirsiniz.
Bu yaklaşım, uygulamanın tamamında açık metin desteğini etkinleştirmekten daha güvenlidir (önceki yöntemde gösterildiği gibi). Ancak en güvenli yaklaşım, Webview kullanarak yalnızca güvenli sayfalara bağlantı vermek olacaktır.
İdeal olarak, bu iki yaklaşımdan yalnızca birini kullanırsınız, çünkü uygulamanın tamamında açık metin desteğini etkinleştirmek, belirli etki alanlarını listelemeniz gerekmediği anlamına gelir. Daha güvenli yaklaşımı tercih etmek istiyorsanız, bu yöntemi izleyin.
Bunu aklımızda tutarak, devam edelim ve uygulamanız için bir network_security_config.xml dosyası oluşturalım. Bunu yapmak için, Android Studio kullanarak uygulama projesini açın (önceki bölümde belirtildiği gibi) ve res dizinine gidin.
Bu dizin, XML dosyaları (AndroidManifest.xml dışında), bitmap görüntüleri ve daha fazlası dahil olmak üzere bir uygulama projesi için kod olmayan tüm dosyaları içerir. res dizini içinde network_security_config.xml dosyası adında bir dosya oluşturun. Ardından, dosyayı açın ve aşağıdaki kodu ekleyin:
<?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>
Bu kod, yalnızca bir alan adının cleartext kullanabileceğini belirtir. Ek URL’leri listelemek için daha fazla “domain includeSubdomains” öğesi ekleyebilirsiniz. Ancak, güvenlik nedenleriyle, bu yapılandırmayı yalnızca kesinlikle ihtiyaç duyan etki alanlarıyla sınırlandırmanızı öneririz.
Değişiklikleri network_security_config.xml dosyasına kaydedin ve manifests dizinine geri dönün. Ağ güvenliği yapılandırmasının çalışması için AndroidManifest.xml dosyasını tekrar düzenlemeniz gerekir.
Dosyayı açın ve uygulama alt öğesini bulun. Ardından, etiketlerinin içine aşağıdaki kod satırını ekleyin:
android:networkSecurityConfig="@xml/network_security_config"
Değişiklikleri dosyaya kaydettikten sonra AndroidManifest.xml dosyasını kapatın ve hepsi bu kadar. Uygulamanız artık belirttiğiniz etki alanı için cleartext’i etkinleştirmelidir.
3. Web Sitenizi HTTPS Kullanmaya Zorlayın
NET::ERR_CLEARTEXT_NOT_PERMITTED hatası için en güvenli çözüm, hata mesajını döndüren web sitesini HTTPS kullanacak şekilde yapılandırmaktır. Bu şekilde, web sitesine ve web sitesinden iletilen tüm veriler şifrelenir.
Modern web’de, web siteniz için HTTPS kullanmamanız için hiçbir neden yoktur. Güvenli Yuva Katmanı (SSL) sertifikasını ücretsiz olarak alabilir ve birkaç dakika içinde sitenize kurabilirsiniz. Aslında, bazı web barındırıcıları (Meşgul Sinyali gibi) tüm süreci sizin için halledebilir.
Bir Meşgul Sinyali hosting planına kaydolduğunuzda, web siteniz için otomatik olarak bir SSL sertifikası yapılandırırız. Ayrıca, MyKinsta kontrol panelinizden web sitenizi HTTPS üzerinden yüklenmeye zorlayabilirsiniz.
Bunu yapmak için MyKinsta’ya erişin, bir web sitesi seçin ve Araçlar sekmesine gidin. HTTPS’yi zorla yazan seçeneği bulun ve Etkinleştir’e tıklayın:
Meşgul Sinyali kullanmıyorsanız, HTTP trafiğini HTTPS üzerinden yeniden yönlendirmek için WordPress .htaccess dosyanızı değiştirebilir veya bu işi sizin için yapacak bir eklenti kullanabilirsiniz. İkincisini tercih ederseniz, şu eklentiyi kullanmanızı öneririz Gerçekten Basit SSL eklenti.
Nginx ve Apache’de HTTP’nin HTTPS’ye nasıl yönlendirileceği ve söz konusu eklentinin nasıl kullanılacağı ile ilgili talimatlar için bu makaleye göz atabilirsiniz. Web sitenizi HTTPS kullanacak şekilde yapılandırdıktan sonra, gezinmek için Android Webview kullanırken artık NET::ERR_CLEARTEXT_NOT_PERMITTED hatasıyla karşılaşmamalısınız.
Özet
Android’de NET::ERR_CLEARTEXT_NOT_PERMITTED hatasıyla karşılaşırsanız, kullandığınız uygulama açık metin veya güvenli olmayan bilgileri iletmek isteyen bir web sayfasına erişmeye çalışıyor demektir. Android, kullanıcı verilerinin tehlikeye atılmasını önlemek için uygulamaların bunu yapmasını engeller.
Normal bir kullanıcıysanız, hatayı döndüren web sitesini ziyaret etmek için bir tarayıcı kullanmanız gerekir. Ancak, uygulamanın veya web sitesinin arkasındaki geliştiriciyseniz, AndroidManifest.xml dosyasını değiştirmeyi deneyebilir, network_security_config.xml aracılığıyla etki alanını izin listesine alabilir ve web sitenizi HTTPS kullanmaya zorlayabilirsiniz.
Meşgul Sinyali kullanıcılarının kendi web siteleri için NET::ERR_CLEARTEXT_NOT_PERMITTED hatasıyla karşılaşma olasılığı çok daha düşüktür. Bunun nedeni, yeni web siteleri için SSL sertifikalarını otomatik olarak kurmamız ve birkaç basit tıklamayla trafiği HTTPS üzerinden yönlendirmenize olanak sağlamamızdır. Size en uygun olanı bulmak için web hosting planlarımızı veya uygulama hosting planlarımızı keşfedin!