Mixed content, HTTPS ile açılan bir sayfanın içinde http:// ile yüklenen görsel, script veya stil dosyası bulunması durumudur. Tarayıcılar aktif içeriği (script, iframe, CSS) çoğunlukla tamamen engeller; pasif içerikte (görsel) ise uyarı verir veya otomatik olarak https'e yükseltmeyi dener.
Belirtiler
- Adres çubuğunda güvenli kilit simgesinin kaybolması veya uyarı çıkması.
- Konsolda "Mixed Content: The page at ... was loaded over HTTPS, but requested an insecure ..." hatası.
- Formların, haritaların veya slider'ların çalışmaması.
Kaynağı bulma
- Tarayıcı geliştirici araçlarında Console sekmesini açıp mixed content uyarılarını okuyun.
- Sayfa kaynağında
http://geçen adresleri arayın. - Veritabanı tabanlı sistemlerde (WordPress vb.) içerik ve ayar tablolarındaki eski http bağlantılarını tarayın.
Kalıcı çözüm
- Kaynak adreslerini https:// ya da protokolden bağımsız göreli yollara (
/img/logo.png) çevirin. - Üçüncü taraf kaynağın https sürümünü kullanın; yoksa dosyayı kendi sunucunuzdan sunun.
- Geçiş döneminde CSP yönergesini ekleyin:
Content-Security-Policy: upgrade-insecure-requests
Bu yönerge http:// kaynak isteklerini tarayıcıda https:// olarak yeniden yazar; ancak hedef sunucu https sunmuyorsa istek yine başarısız olur, bu yüzden asıl çözüm adresleri düzeltmektir.
Önleme
- Yeni içerik eklerken tam http adresi yapıştırmayın.
- HTTP'den HTTPS'e 301 yönlendirmesi ve HSTS kullanın.
- Yayın sonrası sayfaları SSL denetleyici ve tarayıcı konsoluyla tarayın.
Üçüncü taraf ve e-posta kaynaklı durumlar
Harici bir reklam veya widget kodu http:// adresinden içerik çağırıyorsa, sağlayıcıdan https sürümünü isteyin. E-posta şablonlarındaki görseller de sitede gösterildiğinde aynı sorunu yaratır. Ayrıca iframe ile gömülen eski sayfalar ve CSS içindeki url(http://...) ifadeleri sıklıkla gözden kaçar; bunları arama-değiştirme ile toplu düzeltin. Değişiklikten sonra önbelleği temizlemeyi unutmayın, çünkü eski HTML önbellekte kalmaya devam edebilir.
Sertifikanız geçerli olsa bile mixed content kilit simgesini bozabilir; sorun sertifikada değil sayfa içeriğindedir. Genel HTTPS sorunlarında SSL sorun giderici de yardımcı olur.