İstemci ve sunucular arasındaki iletişimi önemli oranda etkileyen HTTP headers, internetin çalışmasını sağlayan temel yapı taşlarından biridir. Yaptığınız SEO analizlerinde ise önemli noktaları görmenizi sağlar. Web siteleri HTTP headers kullanarak istemciler ile iletişim kurar ve uygun yanıt verir. Bu yazı sayesinde HTTP Headers nedir, HTTP headers türleri nelerdir gibi birçok soruya cevap bulacak, detaylı bir şekilde inceleyebileceksiniz.
HTTP headers, HTTP istekleri ve yanıtları sırasında aktarılan metinsel bilgilerdir. Web sunucusu ile bir istemci arasında veri aktarımı yapan kodlar olarak ifade edilir ve esas olarak sunucu ve istemci arasında iletişim için tasarlanmışlardır.
Her bir HTTP Header bir ad ve değer çiftinden oluşur, sonrasında ise iki nokta üst üste(:) ile ayrılır.
GET /sayfa HTTP/1.1
Host: www.ornek.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36
Accept-Language: tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7
Connection: keep-alive
Bu örneği inceleyecek olursanız Host, User-Agent ve Accept-Language olarak 3 farklı HTTP Header göreceksiniz.
Çeşitli bilgileri aktarmak ve işlemleri düzenlemek için oldukça önemli bir iletişim aracı olan HTTP Headers’ın başlıca görevleri şu şekildedir:
En sık karşılaşabileceğiniz HTTP header türleri şu şekildedir.
HTTP Request Header (HTTP İstek başlıkları), istemci tarafından sunucuya gönderilen talepleri belirtir. HTTP Response Headers(HTTP Yanıt başlıkları) ise ise sunucudan istemciye gönderilen yanıtları ifade etmektedir..
Host: Bu HTTP Header, hedef sunucunun adını veya IP adresini belirtir.
Örnek: Host: www.ornekweb.com
User-Agent: Sunucu, burada verilen bilgilere göre uygun içeriği göndereceği istemci özelliklerini belirtir. Sunucular, farklı tarayıcılar ve cihazlar için içerik sunma veya uygun bir yanıt döndürme amacıyla bu bilgiyi kullanır.
Örnek : User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0
Accept: Tarayıcının kabul edebileceği içerik türlerini belirtir. Örneğin, "text/html" HTML içerik türünü kabul ettiğini gösterir.
Örnek : Accept: text/html
Accept-Language: İstemcinin dil tercihini belirtmek için kullanılır. Sunucu, içeriği bu tercihlere göre sunar. Bu HTTP header sayesinde birden fazla dil tercihiniz varsa virgülle ayırarak belirtebilirsiniz.
Örnek : Accept-Language: tr-TR
Authorization: Kimlik doğrulama için kullanılır ve yetkilendirme bilgilerini içerir. Genellikle, kullanıcı adı ve şifre gibi kimlik doğrulama mekanizmalarında kullanılır.
Content-Type: İçeriğin türünü belirtir.
Örnek: Content-Type: text/html; charset=utf-8
Content-Length: İstekteki içeriğin uzunluğunu belirtir. Bu uzunluğu bayt cinsinden verir. Sunucu, isteği işlerken bu bilgiyi kullanır.
Örnek: Content-Length: 1024
Referer: İsteğin nereden geldiğini belirtir. Özellikle bir bağlantıya tıkladığında, yeni sayfada hangi bağlantıdan geldiğini belirlemek için kullanılır.
Örnek: Referer: https://www.google.com/search?q=ornek+arama
Cookie: Tarayıcı, sunucuya daha önce gönderilen çerezleri bu başlıkla gönderir. Sunucu, kullanıcı oturumlarını yönetmek ve özelleştirilmiş deneyim sunmak için bu bilgiyi kullanır.
Örnek: Cookie: kullanicilar=kisi; dil=tr
Cache-Control: Önbellekleme davranışını belirler. Örneğin, "no-cache" önbelleği kullanmayı engelleyerek, sunucudan her zaman yeni içerik alınmasını sağlar.
Örnek: Cache-Control: max-age=3600
If-Modified-Since: Eğer belirtilen tarihten sonra içerik değişmediyse, sunucu içeriği göndermeyebilir. Bu HTTP header sayesinde, içeriğin güncel olup olmadığını kontrol eder.
Örnek: If-Modified-Since: Sat, 30 Jul 2023 10:30:00 GMT
Origin: Cross-Origin Resource Sharing (CORS) politikaları için köken (origin) bilgisini belirtir. Sunucu, bu bilgiyi kullanarak istemciye veri paylaşımını kontrol eder.
Örnek: Origin: https://www.ornekuygulama.com
Bu istek başlıkları sayesinde iletişimin daha verimli ve güvenli olur. Sunucular, belirtilmiş olan HTTP Header’larda verilen bilgileri kullanarak istemcilere uygun yanıtlar verir ve kullanıcı deneyimini geliştirebilir.
Web sunucusu, bir istemcinin (tarayıcının) gönderdiği isteği aldığında, isteği işleyerek bir yanıt döner. HTTP Response Headers (yanıt başlıkları) , sunucunun yanıtı hakkında bilgi verir ve istemciye gereken içeriği nasıl işleyeceğini belirtir. Yanıt başlıklarının bazı örnekleri şunlardır:
HTTP Durum Kodu (HTTP Status Code): Sunucunun işlemin durumunu belirtmek için gönderdiği üç haneli bir kod. Örneğin:
200 OK: İstek başarılı, içerik gönderiliyor.
404 Not Found: İstek yapılan kaynak bulunamadı.
500 Internal Server Error: Sunucuda bir iç hata meydana geldi.
Örnek: HTTP/1.1 200 OK
Content-Type: Yanıtın içeriğinin türünü belirtir.
Örneğin: text/html: HTML içeriği
application/json: JSON verisi
image/jpeg: JPEG formatında resim
Content-Length: Yanıtın içeriğinin uzunluğunu bayt cinsinden belirtir.
Örnek: Content-Length: 1024
Cache-Control: Tarayıcıda veya önbellekleyici aracılarda içeriğin nasıl önbellekleneceğini yönlendirir.
Örnek: Cache-Control: no-cache, no-store, must-revalidate
Location: Yönlendirme durumunda (örneğin 301 veya 302 durum kodlarıyla) kullanılması gereken yeni kaynağın URLini belirtir.
Örnek: Location: https://www.example.com/new-page
Set-Cookie: Bu HTTP header sayesinde tarayıcıya çerez (cookie) göndermek için kullanılır. Sunucu, tarayıcıda saklanacak çerez bilgilerini bu başlıkla gönderir.
Örnek: Set-Cookie: session_id=abc123; Expires=Sat, 24 Jul 2023 12:00:00 GMT; Path=/
Date: Oluşturulan yanıtın tarih ve saat bilgisini verir.
Örnek: Date: Sun, 16 Jul 2023 18:00:00 GMT
Server: Sunucuya ait yazılımın adını ve sürümünü verir.
Örnek: Server: Apache/2.4.38 (Unix)
Content-Encoding: Yanıtın içeriğinin nasıl kodlandığını belirtir. Örneğin, "gzip" sıkıştırma ile gönderilmiş ise aşağıda verilmiş HTTP Header kullanılır.
Örnek: Content-Encoding: gzip
ETag: İçeriğin bir etiketini (tag) belirtir. Sunucu, bu etiketi sonraki isteklerde "If-None-Match" başlığında kullanarak içeriğin değişip değişmediğini kontrol edebilir.
Örnek: ETag: "abc123"
Expires: Önbellekteki içeriğin geçerliliğinin sona ermiş ise buna ait tarih ve saat bilgisini verir.
Örnek: Expires: Thu, 01 Aug 2023 00:00:00 GMT
Last-Modified: İçeriğe ait son güncellenme tarihini belirtir.
Örnek: Last-Modified: Wed, 12 Jul 2023 15:30:00 GMT
Burada belirtilen HTTP headers, sunucudan gelen yanıtların yönetimi ve işlenmesinde önemli bir rol oynarlar. İstemci (tarayıcı) bu başlıkları kullanarak yanıta ve içeriğe uygun şekilde tepki verir.
GET /hedef-sayfa HTTP/1.1
Host: www.ornekweb.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.5,en;q=0.3
Cookie: kullanicilar=x kişisi; dil=tr
Kullanılan Accept HTTP Header’da ‘text/html’ belirtilerek tarayıcının HTML içeriği kabul ettiğini, Accept-Language: tr-TR HTTP headerını kullanarak ise Türkçe dil tercihi yaptığını, son olarak ise Cookie: kullanicilar=x kişisi; dil=tr HTTP Headerı ile önceden sunucudan alınmış olan "kullanıcılar" ve "dil" adlı çerezleri sunucuya tekrar gönderdiği çıkarımını yapabilirsiniz.
HTTP/1.1 200 OK Date: Sat, 30 Jul 2023 12:00:00 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 255
Set-Cookie: dil=tr; expires=Sat, 06 Aug 2023 12:00:00 GMT; path=/; HttpOnly
Server: Apache
Cache-Control: max-age=3600
Bu örnekte ise sunucunun 200 durum kodu ile başarılı bir şekilde yanıt verdiğini; text/html olarak belirtilen content-type HTTP header ile HTML içerikleri kabul ettiğini; önbellekteki içeriğin geçerliliğinin Sat, 06 Aug 2023 12:00:00 tarihinde sona erdiğini, cache-control HTTP header ile ise içeriğin 3600 saniye (1 saat) boyunca önbelleğe alınabileceğini belirtmek istediğini görebilirsiniz.
HTTP Headers, istemli ile sunucu arasında HTTP Request Headers (HTTP İstek Başlıkları) ve HTTP Response Headers (HTTP Yanıt Başlıkları) olarak isimlendirilen başlıklar ile bilgi iletilmesini sağlayan kodlardır.
Türkçesi HTTP istek başlıkları olan HTTP request headers, istemcinin sunucuya gönderdiği talebi, yapmak istediği işlemi belirttiği başlıklardır. Sunucunun isteği doğru bir şekilde anlaması için oldukça büyük önem taşırlar.
Türkçesi HTTP yanıt başlıkları olan HTTP response headers, sunucunun istemciden aldığı istek başlıklarına verilen yanıt başlıklarıdır.