# HTTP Başlık Denetleyicisi

Tarayıcı başka bir sitenin yanıt başlıklarını CORS yüzünden okuyamıyor; denetlenmesi gereken şey tam olarak o görünmeyen başlıklar.

Ücretsiz SEO Araçları · Kaynak: https://kobiseo.com/araclar/http-baslik-denetleyici/

Son güncelleme: 2026-08-26

> Aracın etkileşimli bölümü bu düz metin sürümünde yer almaz; kullanmak için yukarıdaki adrese bakın. Aşağıdaki bölüm aracın ne yaptığını ve arkasındaki kuralları anlatan kalıcı içeriktir.

Bir sayfa açıldığında tarayıcıya yalnız HTML gitmiyor; yanında bir dizi başlık geliyor ve o başlıklar tarayıcıya ne yapabileceğini söylüyor. Hangi kaynaktan betik yükleyebileceğini, sayfayı çerçeveye alıp alamayacağını, çerezi ne zaman göndereceğini.

Bu başlıkları tarayıcıdan denetleyemezsiniz: CORS, başka bir kökenin yanıt başlıklarını okumayı engelliyor. Denetlenmesi gereken şey tam olarak o görünmeyen kısım.

Araç adresi sunucudan açıp bütün başlıkları okuyor ve dört bölümde raporluyor: güvenlik, bilgi sızıntısı, başarım ve arama. Eksik güvenlik başlıklarını da sunucunuzun biçiminde hazır satır olarak veriyor.

## HTTP başlıkları nedir?

Bir sayfayı açtığınızda sunucunun, sayfanın kendisinden **önce** gönderdiği bilgi satırlarına **HTTP yanıt başlıkları** deniyor. Türkçede "sunucu başlıkları" olarak da anılıyor; İngilizce kaynaklarda **HTTP response headers** adıyla geçiyor ve denetim araçlarına **HTTP header checker** deniyor.

Bu satırlar tarayıcıya sayfanın türünü, ne kadar önbelleğe alınacağını, hangi güvenlik kurallarının uygulanacağını ve arama motorlarının sayfayı dizine ekleyip ekleyemeyeceğini söylüyor. Hiçbiri ekranda görünmüyor; ama sayfanın nasıl davranacağını büyük ölçüde bunlar belirliyor.

Araç adresi açıp bütün başlıkları olduğu gibi listeliyor, ayrıca güvenlik başlıklarını ve SEO ile ilgili olanları ayrı ayrı değerlendiriyor. Çerez değerleri gizleniyor: başlıkta oturum bilgisi olabiliyor ve onu ekrana basmak doğru olmaz.

## Hangi başlıklar SEO açısından önemli?

Dördü doğrudan etkili. **`X-Robots-Tag`** sayfanın dizine eklenip eklenmeyeceğini söylüyor; `noindex` değeri buradan verildiğinde HTML'e bakarak fark edilmiyor, bu yüzden en sinsi hatalardan biri.

**`Content-Type`** karakter kodlamasını taşıyor; `charset` eksik ya da yanlışsa Türkçe harfler bozuk görünüyor. **`Cache-Control`** sayfanın ne kadar süre saklanacağını belirliyor ve sayfa hızını doğrudan etkiliyor. **`Content-Encoding`** ise sıkıştırmanın açık olup olmadığını gösteriyor.

Güvenlik başlıkları sıralamayı değiştirmiyor ama sitenin güvenilirliğini etkiliyor: `Strict-Transport-Security`, `X-Content-Type-Options`, `Referrer-Policy` ve `Content-Security-Policy`. Bir de tersi var, olmaması gerekenler: `Server` ve `X-Powered-By` sürüm bilgisi sızdırıyor ve bilinen açıkları arayan otomatik taramalara adres veriyor.

## Güvenlik başlıkları ne yapıyor?

**Strict-Transport-Security (HSTS).** Tarayıcıya "bu siteye bir daha hiç şifresiz bağlanma" diyor. Olmadığında ilk istek şifresiz gidebiliyor ve araya girilmeye açık kalıyor. Yaygın öneri en az bir yıl.

**Content-Security-Policy (CSP).** Sayfaya hangi kaynaktan betik, stil ve görsel yüklenebileceğini sınırlıyor. Sayfaya enjekte edilen bir betiği durduran tek şey bu. Araç yalnız varlığına değil İÇERİĞİNE de bakıyor: `script-src` içinde `'unsafe-inline'` varsa korumanın büyük bölümü zaten devre dışı.

**X-Content-Type-Options: nosniff.** Tarayıcının dosya türünü içeriğinden tahmin etmesini kapatıyor. Metin diye sunulan bir dosyanın betik gibi çalıştırılması bu yolla oluyor.

**Çerçeveleme koruması.** CSP'nin `frame-ancestors` yönergesi ya da eski karşılığı `X-Frame-Options`. Sayfanızın başka bir sitede görünmez bir çerçeveye alınıp kullanıcıya farkında olmadan tıklatılmasını engelliyor.

**Permissions-Policy.** Kamera, mikrofon ve konum gibi yetenekleri baştan kapatıyor. Sitede kullanılmıyorsa kapatmak, gömülü üçüncü taraf içeriğin bunları istemesini de engelliyor.

## Geri alması zor olan iki ayar

Güvenlik başlıklarının çoğu istediğiniz zaman kaldırılabiliyor. İkisi öyle değil ve araç bunları öneri olarak vermiyor.

**HSTS `preload`.** Alan adınızı tarayıcıların ön yükleme listesine sokuyor. Liste tarayıcı sürümüyle birlikte dağıtıldığı için çıkmak aylar sürüyor. Bu süre boyunca `http` üzerinden çalışan bir alt alan adınız varsa tamamen erişilemez oluyor.

**HSTS `includeSubDomains`.** Bütün alt alan adlarını da kapsıyor. Bir alt alan adı hâlâ `http` ile duruyorsa o gün kırılıyor. Alt alan adları denetlendikten sonra açılmalı.

Araç bu ikisini "eksik" olarak işaretlemiyor; varsa "bunu bilerek yapmış olun" diyor. Bir denetim aracının işi, geri alması zor bir taahhüdü rutin bir onay kutusu gibi göstermek değil.

## Altyapınızı duyuran başlıklar

`Server: nginx/1.18.0`, `X-Powered-By: PHP/7.4.3`, `X-AspNet-Version`… Bu başlıklar ziyaretçiye hiçbir şey katmıyor, yalnız hangi yazılımın hangi sürümünü çalıştırdığınızı duyuruyor.

Sürümü gizlemek bir açığı kapatmıyor; bu bir savunma değil. Yaptığı şey hedef seçmeyi zorlaştırmak: bilinen bir açığı olan sürümleri tarayan otomatik araçlar sizi listeden eleyemiyor.

Kapatılması genelde tek satır: nginx'te `server_tokens off`, PHP'de `expose_php = Off`, Express'te `app.disable('x-powered-by')`.

Araç sürüm numarası taşıyan başlıkları ayrıca işaretliyor: `Server: cloudflare` gibi sürümsüz bir değer sorun değil.

## Sıkıştırma ve önbellek

**Content-Encoding.** Metin içerikte sıkıştırma boyutu üçte bire kadar indiriyor; sitenin en ucuz hız kazancı bu. Araç isteği `br` ve `zstd` desteklediğini söyleyerek atıyor, yoksa sunucu sıkıştırma göndermiyor ve "sıkıştırma yok" gibi görünüyor.

Brotli (`br`) aynı içeriği gzip'e göre genelde %15-20 daha küçük veriyor ve bütün modern tarayıcılar destekliyor. gzip görüyorsanız yükseltmeye değer.

**Cache-Control.** Yoksa tarayıcı ve ara sunucular ne kadar saklayacaklarını kendileri tahmin ediyor. HTML için kısa bir süre bile olsa açıkça yazılmalı.

**ETag ya da Last-Modified.** İkisi de yoksa koşullu istek yapılamıyor: içerik değişmese bile her ziyarette baştan indiriliyor. Varsa sunucu 304 dönüp hiç veri aktarmıyor.

## Yönlendirmeler neden izlenmiyor?

Araç yönlendirmeleri bilerek izlemiyor. Sebebi şu: başlıklar kime ait, belirsiz kalmasın.

`siteniz.com` yazdığınızda sunucu genelde `https://www.siteniz.com/` adresine yönlendiriyor. Yönlendirme yanıtının kendi başlıkları var ve asıl sayfanınkilerden farklı olabiliyor; çoğu sunucu 301 yanıtına güvenlik başlığı koymuyor.

İzleyen bir araç size son sayfanın başlıklarını gösterir ama hangi adresin denetlendiğini gizler. Yönlendirmeyi gördüğünde bu araç durup söylüyor ve son adresi veriyor; siz o adresle yeniden soruyorsunuz.

Zincirin tamamını görmek için [yönlendirme denetleyicisi](https://kobiseo.com/araclar/yonlendirme-denetleyici/) var.

---

## Sık sorulanlar

Güvenlik başlıkları hem kolay eklenen hem kolay yanlış eklenen şeyler. Aşağıdaki dört soru en sık gelenler; cevaplarda neyin güvenli olduğunu ve neyin siteyi kırabileceğini ayırdık.

### CSP eklersem sitem bozulur mu?

Yanlış yazılırsa evet. CSP, listede olmayan her kaynağı engelliyor: analitik betiği, gömülü video, dış yazı tipi, ödeme çerçevesi.

Güvenli yol iki adım. Önce `Content-Security-Policy-Report-Only` başlığıyla yayına alın; hiçbir şeyi engellemiyor, yalnız neyin engelleneceğini tarayıcı konsoluna yazıyor. Birkaç gün gerçek trafikte izleyip listeyi tamamlayın, sonra asıl başlığa geçin.

Aracın verdiği CSP satırı da başlangıç noktası: sitenizin dış kaynaklarını eklemeden olduğu gibi yapıştırmayın.

### Bütün başlıkları eklemem şart mı?

Hayır. Doğru değer siteye göre değişiyor. `frame-ancestors 'none'` çoğu site için doğru ama gömülmesi gereken bir araç ya da widget sayfasında yanlış olur.

`Cross-Origin-Resource-Policy: same-origin` de böyle: dosyalarınızın başka sitelere gömülmesini engelliyor. Rozet, gömülü görsel ya da yazı tipi sunuyorsanız o yollar için `cross-origin` gerekiyor.

Bu yüzden araç puan vermiyor. Her madde ne yaptığını ve eksikliğinde ne olduğunu söylüyor; kararı siz veriyorsunuz.

### Cloudflare kullanıyorum, zaten korunuyor muyum?

Kısmen. Cloudflare TLS, sıkıştırma ve önbelleği hallediyor; sunucu sürümünü de gizliyor. Ama güvenlik başlıklarını sizin adınıza EKLEMİYOR.

Cloudflare Pages ve Workers Assets kullanıyorsanız `_headers` dosyası en pratik yol: aracın "Cloudflare" seçeneği tam olarak o biçimi veriyor. Dashboard'daki Transform Rules ile de eklenebiliyor.

Aracın denetlediği şey son ziyaretçinin gördüğü yanıt, yani Cloudflare'in eklediği başlıklar da bu sonuca dahil.

### Çerez değerlerini görüyor musunuz?

Hayır. Sunucu `Set-Cookie` başlığının değerini silip yalnız çerezin adını ve özniteliklerini (`Secure`, `HttpOnly`, `SameSite`) tarayıcınıza gönderiyor.

Denetimin ihtiyacı olan zaten bunlar. İstek oturumsuz olduğu için gelen çerez kimseye ait değil; yine de değeri taşımıyoruz.

Adresiniz de kayda geçmiyor, sayfa saklanmıyor.

## Kaynaklar

- [MDN: HTTP başlıkları](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers), Mozilla — resmî kaynak
- [OWASP: HTTP Security Response Headers](https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html), OWASP — resmî kaynak
- [MDN: Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP), Mozilla — resmî kaynak
- [Cloudflare: _headers dosyası](https://developers.cloudflare.com/pages/configuration/headers/), Cloudflare — resmî kaynak
