net::err_cleartext_not_permitted HATASI ve ÇÖZÜMÜ
## “net::ERR_CLEARTEXT_NOT_PERMITTED” Hatası Nedir?
Gelişen internet teknolojileri ile birlikte, web siteleri ve mobil uygulamalar üzerinde güvenlik önlemleri de artmaktadır. Android uygulamalarında geliştiriciler ve kullanıcılar sıkça çeşitli hata mesajlarıyla karşılaşabilmektedir. Bu hatalardan biri olan “net::ERR_CLEARTEXT_NOT_PERMITTED” hatası, uygulamanın HTTP gibi şifrelenmemiş protokoller üzerinden veri alışverişine izin vermediğinde ortaya çıkar. Bu hata genellikle Android 9 (Pie) ve üzeri versiyonlarda gözlemlenir, çünkü Android 9 itibarıyla varsayılan olarak şifresiz trafik engellenmektedir. Bu makalede hatanın nedenlerini, nasıl teşhis edileceğini ve çözüm yollarını detaylıca inceleyeceğiz.
## Hatanın Nedenleri ve Teşhisi
“Net::ERR_CLEARTEXT_NOT_PERMITTED” hatası, güvenli olmayan bir ağ protokolü kullanarak bir web kaynağına erişmeye çalışan Android uygulamalarında karşılaşılan bir problem olarak bilinir. Bu hata mesajı genellikle iki temel nedenden ötürü ortaya çıkar:
1. **Uygulamanın Ağ Güvenlik Konfigürasyonu**: Android 9 veya daha yeni bir işletim sistemi kullanıyorsanız, varsayılan ağ güvenlik politikası sadece şifreli (HTTPS) bağlantıları kabul eder. HTTP gibi şifresiz protokoller kullanan bağlantılara izin vermeden önce, bu güvenlik politikasının değiştirilmesi gerekir.
2. **Manifest Dosyasında Eksik ya da Hatalı Konfigürasyon**: AndroidManifest.xml dosyasında uygun ağ güvenlik konfigürasyonlarının yapılandırılmamış olması bu hatanın bir diğer sebebidir. Bu, özellikle eski uygulamaları yeni Android sürümlerine taşırken göz ardı edilebilen bir detaydır.
Hatanın teşhisi genelde uygulamanın hata kayıtlarını inceleyerek veya uygulamayı farklı ağ ortamlarında test ederek yapılır. Ayrıca, geliştirme aşamasında kullanılan IDE’ler (Integrated Development Environment) ve hata ayıklama araçları da problemin kaynağını belirlemede yardımcı olabilir.
## Hatanın Çözüm Yöntemleri
Bu hatayı çözmek için birkaç yöntem mevcuttur ve uygulamanıza en uygun çözümü seçmek önemlidir. İşte adım adım temel çözüm yöntemleri:
1. **AndroidManifest.xml Dosyasının Güncellenmesi**:
“`xml
“`
Bu ayar, uygulamanın HTTP bağlantılarına izin vermesini sağlar. Ancak, güvenlik açısından olası tehditleri göz önünde bulundurarak bu yöntemi sadece gerekli olduğunda kullanmalısınız.
2. **Ağ Güvenlik Konfigürasyon Dosyası Kullanma**:
Uygulamanıza özel ağ güvenlik konfigürasyon dosyası oluşturarak, hangi domainlerin şifresiz trafik kullanabileceğini daha granüler bir şekilde kontrol edebilirsiniz. Bu dosya genelde `res/xml/network_security_config.xml` olarak yer alır.
“`xml
güvensizdomain.com
“`
Bu yapılandırmayla, sadece belirli domainler için şifresiz trafik aktif hale getirilebilir.
3. **Kod Düzeyinde Güvenlik Protokollerinin Yönetilmesi**:
Uygulamanın ağ isteklerini yönettiği kütüphaneleri (örneğin, OkHttp, Retrofit) kullanarak HTTPS protokolleri zorunlu hale getirilebilir. Bu, uygulamanın güvenliğini artırırken, şifresiz istekleri engellemek için bir başka etkili yoldur.
## En İyi Uygulamalar ve Öneriler
İdeal olarak, uygulamanızın güvenliğini sağlamak için her zaman HTTPS kullanmanız önerilir. Ancak bazı durumlar, eski veya test edilmiş sistemlerle uyumluluğu gerektirebilir ve bu durumlarda şifresiz trafiğe izin vermek gerekebilir. En iyisi:
– Geliştirme aşamasında tüm trafik üzerinde tam kontrol sağlamak için HTTPS kullanın.
– Sadece güvenilir kaynaklarla veri alışverişi yapın.
– Uygulamanın güvenliği ile kullanıcı deneyimi arasında doğru bir denge kurun.
Hata yönetimi ve güvenlik konfigürasyonu, bir uygulamanın başarısı için kritik öneme sahip olduklarından, bu konulara gereken önemi vermek ve uygun çözüm yollarını uygulamak geliştiricilerin sorumluluğundadır.