İletişim

HTTP Başlığı (HTTP Header) Nedir?

Kısa tanım

HTTP başlığı (HTTP header), bir HTTP isteğinde ya da yanıtında gövdeden önce gelen, “Ad: değer” biçimindeki üst veri satırıdır. İstek başlıkları istemcinin hangi siteyi istediğini, hangi formatları kabul ettiğini ve kimlik bilgisini taşır; yanıt başlıkları içeriğin türünü, önbellekte ne kadar tutulacağını, çerezleri ve güvenlik kurallarını bildirir. Başlık adları büyük-küçük harfe duyarlı değildir; standart alanların anlamı RFC 9110'da tanımlanır.

Diğer adları: HTTP Header, HTTP başlık alanı, Header field, İstek başlığı, Yanıt başlığı

Bir yanıtın HTTP başlıklarını listeleyen terminal çıktısı ve bu başlıkları okuyan tarayıcı, önbellek ve arama botu

Bir HTTP mesajının üst verisi

Her HTTP mesajı üç parçadan oluşur: başlangıç satırı (istekte metot ve adres, yanıtta durum kodu), başlıklar ve isteğe bağlı bir gövde. Tarayıcıda gördüğünüz sayfanın HTML'i gövdedir; o HTML'in hangi karakter kümesiyle yazıldığı, sıkıştırılıp sıkıştırılmadığı ya da ne kadar süre saklanabileceği ise başlıklarda yazar. Mesajın genel akışı HTTP istek ve yanıt maddesinde anlatılıyor; burada başlıkların kendisine odaklanıyoruz.

Bir ürün sayfası için tarayıcının gönderdiği istek ve sunucunun döndüğü yanıt, gövdeler çıkarıldığında şöyle görünür:

GET /urunler/kahve-makinesi HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html
Accept-Language: tr-TR,tr;q=0.9,en;q=0.8
Accept-Encoding: gzip, br
Cookie: sepet=8f2c41
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Encoding: br
Cache-Control: public, max-age=600
Vary: Accept-Encoding
Set-Cookie: dil=tr; Path=/; Max-Age=31536000; Secure

İstek başlıkları ve yanıt başlıkları

Bazı başlıklar yalnızca istemciden sunucuya, bazıları yalnızca sunucudan istemciye gider; Content-Type gibi bir kısmı ise iki yönde de kullanılır.

BaşlıkYönNe söyler?
HostİstekHangi alan adının istendiğini; aynı IP adresinde çok sayıda site barındırmayı mümkün kılar
User-Agentİstekİstemci yazılımını tanıtır; tarayıcılar da arama motoru botları da buraya kendi adını yazar, ama değer kolayca taklit edilebilir
Accept-Language, Accept-EncodingİstekTercih edilen dil ve sıkıştırma biçimi (içerik müzakeresi)
AuthorizationİstekKimlik bilgisi, örneğin Bearer şemasıyla bir token
Cookie / Set-Cookieİstek / YanıtTarayıcıda saklanan çerezleri geri gönderir / yeni çerez kaydettirir
LocationYanıtYönlendirmenin hedefini veya yeni oluşturulan kaynağın adresini
Cache-ControlHer ikisiYanıtın tarayıcıda ve ara katmanlarda nasıl önbelleğe alınacağını; ayrıntısı Cache-Control maddesinde
VaryYanıtHangi istek başlıkları değiştiğinde yanıtın da değiştiğini; önbelleklerin yanlış sürümü sunmasını önler

Arama motorlarının okuduğu başlıklar

Googlebot bir sayfayı HTML'inden önce başlıklarıyla birlikte alır ve bazı kararları yalnızca başlıklara bakarak verir:

  • X-Robots-Tag: Meta robots etiketinin HTTP karşılığıdır. PDF, görsel gibi içine HTML etiketi eklenemeyen dosyalarda noindex vermenin yolu budur; yanlışlıkla bütün siteye eklenen bir X-Robots-Tag ise sayfaların dizinden düşmesine yol açar.
  • Link: HTML olmayan bir dosya için canonical adres bu başlıkla bildirilebilir: Link: <https://www.example.com/katalog.pdf>; rel="canonical".
  • Location: 301 ve 302 yönlendirmelerinin hedefi buradadır; hedef göreli ya da hatalı yazılmışsa yönlendirme kırılır.
  • Content-Type: HTML bir sayfa text/plain olarak sunulursa tarayıcı onu düz metin gösterir, arama motoru da sayfa olarak işlemez.

Bir sayfanın gerçekten hangi başlıklarla döndüğünü görmek için tarayıcı geliştirici araçlarının Network sekmesi ya da komut satırında curl -sD - -o /dev/null https://www.example.com/ yeterlidir. SEO Analiz Aracı da yanıttaki X-Robots-Tag ve güvenlik başlıklarını raporlar.

Güvenlik politikaları da başlıkla gelir

Tarayıcıya “bu siteye yalnızca HTTPS ile bağlan”, “bu sayfayı başka bir sitenin çerçevesinde gösterme” ya da “yalnızca şu kaynaklardan script çalıştır” demenin yolu yanıt başlıklarıdır. HSTS, Content-Security-Policy ve X-Content-Type-Options bu gruptadır ve güvenlik başlıkları maddesinde ayrıca ele alınıyor. Farklı kökenden gelen isteklere hangi koşullarda izin verileceğini belirleyen CORS da tamamen başlıklar üzerinden işler. Ters yönde bir öneri de vardır: Server veya X-Powered-By başlıklarında yazılımın tam sürümünü yayınlamak saldırganın işini kolaylaştırır, gereksizse kaldırılmalıdır.

Yazım kuralları ve sık yapılan hatalar

  • Harf duyarlılığı: Content-Type ile content-type aynı başlıktır. HTTP/2 ve HTTP/3 başlık adlarını küçük harfle taşır, bu yüzden geliştirici araçlarında küçük harfle görünmeleri normaldir.
  • X- öneki: Özel başlıklara X- ekleme alışkanlığı 2012'de RFC 6648 ile önerilmez hâle geldi. Yeni bir özel başlık için açıklayıcı bir ad seçmek yeterlidir.
  • Çift kaynak: Uygulama bir Cache-Control değeri gönderirken CDN veya sunucu yapılandırması ikinci bir değer ekleyebilir. Çelişen başlıkların nasıl yorumlanacağı belirsizdir; her başlığın tek bir yerden yönetilmesi gerekir.
  • Yerelde doğru, canlıda farklı: Reverse proxy, CDN ve WAF başlık ekleyip silebilir. Kontrol her zaman kullanıcının gördüğü canlı adres üzerinden yapılmalıdır.

İlgili terimler

← Sözlüğe dön