HTTP Başlık Denetleyicisi Nedir?
HTTP Başlık Denetleyicisi, bir sayfa tarayıcıda tamamen görünmeden önce bir sunucunun geri gönderdiği verileri gösteren pratik bir web sitesi inceleme aracıdır. Bir web sitesini açtığınızda genellikle görebildiğiniz şeylere odaklanırsınız: Düzen, metin, resimler, menü, düğmeler. Ancak arka planda her istek HTTP başlıkları (headers) adı verilen teknik talimatlarla birlikte gelir. Bunlar tarayıcılara, arama motoru botlarına, araçlara, proxy'lere ve diğer sistemlere yanıtın nasıl işlenmesi gerektiğini söyler.
Bu başlıkları ilk bakışta göründüklerinden çok daha önemli kılar. Güvenliği, önbelleğe almayı, yönlendirmeleri, içerik işlemeyi, dizine ekleme davranışını ve tarayıcı korumalarını etkileyebilirler. Başka bir deyişle başlıklar, oyuncu sahneye çıkmadan önce elden ele dolaşan küçük kulis notları gibidir. Seyirci performansı görür. Tarayıcı ise önce talimatları görür.
Bu araç bu talimatları incelemenize yardımcı olur. Bir web sitesinin doğru durum kodunu döndürüp döndürmediğini, doğru şekilde yönlendirip yönlendirmediğini veya güvenlik başlıklarının eksik olup olmadığını tahmin etmek yerine bir URL girebilir ve yanıtı doğrudan görebilirsiniz. Geliştiriciler, SEO uzmanları, sistem yöneticileri ve meraklı site sahipleri için bu zaman kazandırır ve tahmin yürütmeyi ortadan kaldırır.
HTTP Başlıkları Neden İnsanların Düşündüğünden Daha Önemlidir?
Bir web sitesi yüzeyde mükemmel görünebilir ve yine de altında garip veya riskli başlıklar döndürebilir. Başlık denetimini bu kadar yararlı kılan şeyin bir parçası da budur. Bazı sorunlar yanıtın kendisini kontrol edene kadar görünmezdir. Bir sayfa yüklenebilir ancak nihai URL'ye ulaşmadan önce üç kez yönlendirme yapabilir. Belki de hiçbir Content-Security-Policy göndermiyordur. Belki sunucu teknolojisini ifşa ediyordur. Belki yanlış içerik türünü döndürüyordur. Belki de birisi aylar önce yapılandırıldığını varsaymış olmasına rağmen bir güvenlik başlığı eksiktir.
Başlıklar farklı sistemlerin sitenizi nasıl yorumladığını da etkiler. Tarayıcılar güvenlik ve işleme kurallarını önemser. Arama motorları durum kodlarını, yönlendirmeleri ve kurallı (canonical) tutarlılığı önemser. Performans araçları önbelleğe alma ve aktarım davranışını önemser. Geliştiriciler hata ayıklamayı önemser. Barındırma geçişleri, CDN değişiklikleri, ters proxy'ler ve kontrol paneli anahtarları belirgin görsel ipuçları olmadan başlıkları değiştirebilir. Bu nedenle basit bir başlık denetleyicisi hızla yararlı hale gelir: Sunucunun söylemesini umduğunuz şeyi değil, gerçekte ne söylediğini gösterir.
Bu HTTP Başlık Denetleyicisi Neyi Gösterir?
Bu araç bir web sitesi URL'sini kontrol eder ve birkaç yararlı bilgi katmanı döndürür. İlk olarak durum kodunu gösterir. Bu isteğin başarılı olup olmadığını, yönlendirildiğini, başarısız olduğunu veya engellendiğini söyler. Ardından sitenin nihai sürüme ulaşmadan önce bir URL'den diğerine atladığı durumlarda son derece yararlı olan yönlendirme zincirini gösterir. Bundan sonra araç yanıt başlıklarını listeler ve güvenlikle ilgili yaygın başlıkların temel bir denetimini sunar.
Bu şu gibi soruları hızlı bir şekilde yanıtlayabileceğiniz anlamına gelir:
- Sayfa 200 OK, 301, 302, 403, 404 veya başka bir şey mi döndürüyor?
- Site HTTP'den HTTPS'ye düzgün şekilde yönlendiriliyor mu?
- Beklenenden daha uzun bir yönlendirme zinciri var mı?
- Content-Security-Policy mevcut mu?
- HSTS HTTPS üzerinde aktif mi?
- X-Frame-Options ayarlanmış mı?
- Referrer-Policy mevcut mu?
- Sunucu gereksiz bilgileri ifşa ediyor mu?
Bu değerlidir çünkü birçok web sitesi sorunu küçük yanıt ayrıntılarıyla başlar. Bazen hata HTML'de değildir. Bazen başlıklarda yaşar ve tavan arasındaki bir rakun gibi sessizce sorun çıkarır. Hemen görmezsiniz ama kesinlikle bir şeyler yanlıştır.
HTTP Başlığı Gerçekte Nedir?
Bir HTTP başlığı bir web isteğinin veya yanıtının parçası olarak istemci ile sunucu arasında gönderilen bir meta veri satırıdır. Pratik anlamda iletişime eklenen ekstra bilgidir. Bir yanıt başlığı tarayıcıya aldığı sayfa hakkında bir şeyler söyler. Sayfa gövdesini paket, başlıkları ise dışına basılmış etiket, damga, uyarılar, yönlendirme işaretleri ve taşıma talimatları olarak düşünün.
Örneğin bir sunucu şunları söyleyebilir:
- Content-Type: Bu yanıt HTML, JSON, CSS, bir resim veya başka bir şeydir.
- Location: Bunun yerine başka bir URL'ye gidin.
- Cache-Control: Bunu daha sonrası için saklayın veya hiç önbelleğe almayın.
- Content-Security-Policy: Hangi komut dosyalarının, stillerin, çerçevelerin veya diğer kaynakların yüklenebileceğini sınırlayın.
- X-Frame-Options: Bu sayfanın bir çerçeve (iframe) içine gömülmesine izin vermeyin.
- Strict-Transport-Security: Gelecekteki ziyaretler için HTTPS kullanın.
"Sayfam iyi görünüyor, öyleyse tarayıcı neden garip davranıyor?" diye düşündüyseniz, cevabın başlıklarda yaşama ihtimali oldukça yüksektir.
Başlıkların Gerçek Hayatta Ne Anlama Geldiğine Dair Örnekler
Bunu daha insani hale getirelim. Tarayıcınızın bir binaya gelen bir ziyaretçi gibi bir web sitesine yaklaştığını hayal edin. Durum kodu kapıcının söylediği ilk şeydir. "200 OK", "İçeri gelin, her şey hazır" anlamına gelir. "301 Moved Permanently", "Yanlış giriş, bundan sonra yeni ön kapıyı kullanın" anlamına gelir. "302 Found", "Şimdilik diğer girişi kullanın" anlamına gelir. "404 Not Found", "O oda mevcut değil" anlamına gelir. "403 Forbidden", "Oda var ama girmenize izin verilmiyor" anlamına gelir.
Şimdi başlıkları girişin etrafına asılmış talimatlar olarak hayal edin:
- Content-Type: text/html "Girmek üzere olduğunuz şey bir web sayfasıdır" anlamına gelir.
- Location: https://example.com/ "Lütfen bunun yerine şuraya yürüyün" anlamına gelir.
- X-Frame-Options: DENY "Kimsenin bu sayfayı bir çerçevenin içine koymasına izin verilmez" anlamına gelir.
- Strict-Transport-Security "Bir dahaki sefere buraya düz HTTP üzerinden gelmeyin. Güvenli girişi kullanın" anlamına gelir.
- Referrer-Policy "Ziyaretçinin nereden geldiği hakkında yalnızca kontrollü miktarda bilgi paylaşın" anlamına gelir.
Evet, başlıklar tekniktir. Ancak soyut saçmalıklar değillerdir. Gerçek sonuçları olan gerçek talimatlardır.
Geliştiriciler ve SEO Uzmanları Neden Başlık Denetleyicileri Kullanır?
Geliştiriciler bu tür araçları kullanırlar çünkü web siteleri canlıya alındıktan sonra genellikle beklenenden farklı davranır. Belki .htaccess kuralları yanlıştır. Belki Nginx başlıkları eksiktir. Belki Apache bir şey, Cloudflare başka bir şey gönderiyordur. Belki hazırlık (staging) ve üretim (production) farklıdır. Belki bir geçişten sonra bir yönlendirme döngüsü ortaya çıkmıştır. Belki bir güvenlik eklentisi başlıkları ayarladığını iddia ediyor ancak aslında ayarlamıyordur. Bir başlık denetleyicisi bu gerçeği hızla ortaya çıkarır.
SEO uzmanları ve site sahipleri başlık denetleyicilerini farklı ama ilişkili bir nedenle kullanırlar. Arama motorları durum kodlarını ve yönlendirmeleri derinden önemser. Sıralanması amaçlanan bir sayfa yanlış kodu döndürürse, gereksiz yönlendirmelerden geçerse veya sürümler arasında tutarsız davranırsa bu tarama bütçesini boşa harcayabilir ve kafa karışıklığı yaratabilir. Teknik SEO genellikle anahtar kelime araştırmasından daha az gösterişlidir, ancak bozuk yanıt mantığı bir siteye sessizce zarar verebilir. Başlık kontrolleri kök salmadan önce bunu yakalamaya yardımcı olur.
Yalın bir dille: Web sitelerini yönetiyor ve başlıkları hiç incelemiyorsanız bazen sunucuya gözleriniz kapalı güveniyorsunuz demektir.
Başlıklar hikayenin yalnızca bir kısmını anlatır. Bir sayfanın sayfa içi ve teknik arama perspektifinden nasıl göründüğünü de incelemek istiyorsanız SEO Denetleyicimizi (SEO Checker) kullanabilirsiniz. Ham sunucu yanıtı ayrıntılarından başlıklara, meta açıklamalara, başlıklara, kurallı etiketlere, şemaya, sosyal etiketlere ve diğer pratik SEO sinyallerine geçmek istediğinizde iyi bir yardımcı araçtır.
Anlamanız Gereken Yaygın Başlıklar
HTTP Durum Kodu (Status Code)
Durum kodu genellikle insanların ilk önemsediği şeydir. Sağlıklı bir sayfa genellikle 200 döndürür. Kalıcı bir taşıma 301 döndürmelidir. Geçici bir yönlendirme 302 veya benzerini döndürmelidir. Eksik bir sayfa 404 verir. Bir site yanlışlıkla yanlış durumu döndürürse bu tarayıcıları, botları, önbellekleme katmanlarını ve kullanıcı güvenini etkileyebilir.
Location
Bu başlık yönlendirmelerde görünür. İstemciye bundan sonra nereye gideceğini söyler. Web siteniz non-www'den www'ye, HTTP'den HTTPS'ye veya eski URL'lerden yeni URL'lere zorlama yapıyorsa Location başlığı bu sürecin bir parçasıdır. Hedef yanlışsa tüm yönlendirme akışı hızla karmaşık hale gelir.
Content-Type
Bu başlık tarayıcıya ne tür bir dosyanın teslim edildiğini söyler. text/html diyorsa tarayıcı bir web sayfasını işlediğini bilir. application/json diyorsa bu genellikle bir API yanıtı anlamına gelir. Yanlış içerik türleri garip işleme davranışları ve güvenlik riskleri yaratabilir.
Content-Security-Policy
Genellikle CSP olarak adlandırılan bu başlık modern güvenlik başlıklarının en önemlilerinden biridir. Tarayıcıya hangi komut dosyası, stil, resim, çerçeve ve diğer kaynak kaynaklarına izin verildiğini söyler. İyi bir CSP belirli saldırı sınıflarını azaltabilir ve sayfada çalışanlar üzerindeki kontrolü sıkılaştırabilir. Eksik bir CSP anında kıyamet anlamına gelmez ancak güçlü bir politika daha dikkatli yapılandırılmış bir sitenin işaretidir.
Strict-Transport-Security
Genellikle HSTS olarak kısaltılan bu başlık tarayıcıya gelecekteki ziyaretlerde HTTPS'yi tercih etmesini söyler. Site zaten HTTPS üzerinden sunulurken güvenli aktarımı zorunlu kılmaya yardımcı olur. Güvenliği önemsiyorsanız HSTS çok ilgili bir başlıktır.
X-Frame-Options
Bu başlık bir sayfanın çerçevelerin (iframe) içine gömülüp gömülemeyeceğini kontrol etmeye yardımcı olur. Bu tıklama hırsızlığı (clickjacking) koruması için önemlidir. Çerçevelenmemesi gereken bir sayfa genellikle buradaki katı bir ayardan yararlanır.
X-Content-Type-Options
Bu başlık belirli MIME türü koklama (sniffing) davranışlarını önlemeye yardımcı olur. Pratik anlamda tarayıcıya yaratıcı olmamasını ve içerik türlerini amaçlamadığınız şekillerde tahmin etmemesini söyler.
Referrer-Policy
Bu başlık kullanıcılar sayfadaki bağlantıları takip ettiğinde ne kadar yönlendiren (referrer) bilgisinin gönderileceğini kontrol eder. Gizlilik, kontrol ve tutarlılık için yararlıdır.
Permissions-Policy
Bu kamera, mikrofon, coğrafi konum ve daha fazlası gibi hangi tarayıcı özelliklerine izin verildiğini tanımlamaya yardımcı olur. Her senaryoda gerekli olmayabilir ancak daha temiz, daha kilitli bir kurulumun parçası olabilir.
Yönlendirme Zincirleri Neden Kontrol Edilmeye Değerdir?
Yönlendirmeler normaldir. Uzun yönlendirme zincirleri ise genellikle değildir. Bir site HTTPS zorunluluğu, www normalleştirmesi, eğik çizgi mantığı, dil işleme, eski URL temizliği veya eklenti davranışı nedeniyle bir URL'den diğerine yönlendirebilir. Tek bir temiz yönlendirme genellikle iyidir. İki tanesi kabul edilebilir olabilir. Bundan fazlası özensiz görünmeye başlar ve bazen zincir kazara oluşur.
Örneğin bir sayfa şu yoldan geçebilir:
- http://example.com
- https://example.com
- https://www.example.com
- https://www.example.com/
Bu yine de doğru yerde bitebilir ancak zaman kaybettirir ve sürtünme ekler. İyi bir başlık denetleyicisi yalnızca nihai hedefi değil tüm yolu görmenize yardımcı olur. Bazen yönlendirme zinciri yanlış yapılandırılmış bir sitenin tüm hikayesini anlatır.
Bu Araç Gerçek Projelerde Nasıl Yardımcı Olur?
Web siteleri oluşturuyor veya yönetiyorsanız bu aracın yararlı olduğu birçok pratik an vardır. Bir geçişten sonra yönlendirmelerin amaçlandığı gibi çalışıp çalışmadığını kontrol edebilirsiniz. Bir güvenlik eklentisini etkinleştirdikten sonra başlıkların gerçekten eklenip eklenmediğini görebilirsiniz. Bir CDN veya ters proxy'nin arkasına geçtikten sonra yanıtları karşılaştırabilirsiniz. Bir web sitesi bir tarayıcıda bir tarayıcı botundan farklı davranıyorsa başlıkları kontrol etmek mevcut en hızlı hata ayıklama adımlarından biridir.
Bir müşteri sitesini denetlerken de yararlıdır. Bazen bir müşteri "Zaten güvenlik başlıklarımız var" der. Bazen bu doğrudur. Bazen ise umudun dokunaklı bir ifadesidir. Bu araç eklenti ayarlarına, varsayımlara veya eski ekran görüntülerine güvenmek yerine cevabı hızlı bir şekilde doğrulamanızı sağlar.
Bu Araç Neleri Yapmaz?
Bir HTTP Başlık Denetleyicisi yararlıdır ancak sihirli değildir. Tam bir sızma testinin yerini almaz. Güvenliği garanti etmez. Olası her başlık nüansını mükemmel şekilde yorumlamaz. Her koşulda her tarayıcıyı simüle etmez. Size yanıtın güçlü bir teknik anlık görüntüsünü verir ve dikkat edilmesi gereken ortak alanları vurgular.
HTTP Başlık Denetleyicisini Kimler Kullanmalıdır?
Bu araç geliştiriciler, SEO uzmanları, sistem yöneticileri, QA test uzmanları, WordPress site sahipleri, ajans ekipleri, serbest çalışanlar ve canlı bir web sitesini yöneten herkes için yararlıdır. Bundan yararlanmak için derin bir arka uç mühendisi olmanıza gerek yoktur. Bir sayfanın doğru kodu döndürüp döndürmediğini, doğru yönlendirip yönlendirmediğini veya temel güvenlik başlıklarının var olup olmadığını bilmek istiyorsanız bu araç zaten geçerlidir.