HTTP Headers Nedir?

HTTP (Hypertext Transfer Protocol) headers, web sunucusu ile istemci (genellikle bir web tarayıcısı) arasında gönderilen istek ve yanıtların meta verilerini içeren bileşenlerdir. HTTP istek ve yanıtları, başlıklar ve gövde (body) olmak üzere iki ana bileşenden oluşur. HTTP başlıkları, bu istek ve yanıtlar hakkında ek bilgi sağlar ve iletişimin nasıl işleneceğini belirler.

HTTP Headers ve Görevleri Nelerdir?

HTTP başlıkları (headers), istemci ve sunucu arasındaki iletişimi yönetmek ve düzenlemek için kullanılan bilgi parçalarıdır. Bu başlıklar, çeşitli görevleri yerine getirerek HTTP istek ve yanıtlarının nasıl işleneceğini belirler. İşte HTTP başlıkları ve temel görevleri:

Genel Başlıklar (General Headers)

  • Cache-Control: Önbellekleme politikalarını belirtir. Örneğin, no-cacheno-storemax-age.
  • Connection: İletişim durumunu belirtir. Örneğin, keep-aliveclose.
  • Date: Mesajın gönderildiği veya alındığı tarihi belirtir.

İstek Başlıkları (Request Headers)

  • Host: İstek yapılan sunucunun adını ve port numarasını belirtir. Örneğin, Host: www.example.com.
  • User-Agent: İstemci yazılımı hakkında bilgi verir. Örneğin, tarayıcı adı ve versiyonu. Örnek: User-Agent: Mozilla/5.0.
  • Accept: İstemcinin kabul edebileceği içerik türlerini belirtir. Örneğin, Accept: text/html, application/json.
  • Authorization: Kimlik doğrulama bilgilerini içerir. Örneğin, Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==.
  • Referer: İsteğin geldiği URL’yi belirtir. Örneğin, Referer: http://www.example.com/previous-page.

Yanıt Başlıkları (Response Headers)

  • Server: Sunucu yazılımı hakkında bilgi verir. Örneğin, Server: Apache/2.4.41 (Ubuntu).
  • Set-Cookie: İstemciye bir çerez göndermek için kullanılır. Örneğin, Set-Cookie: sessionId=abc123; Path=/; HttpOnly.
  • Location: Yeniden yönlendirme için kullanılan URL’yi belirtir. Örneğin, Location: http://www.example.com/new-page.
  • WWW-Authenticate: Kimlik doğrulama gereksinimlerini belirtir. Örneğin, WWW-Authenticate: Basic realm="Access to the staging site".

Varlık Başlıkları (Entity Headers)

  • Content-Type: Yanıtın içeriğinin türünü belirtir. Örneğin, Content-Type: text/html; charset=UTF-8.
  • Content-Length: İçeriğin bayt cinsinden boyutunu belirtir. Örneğin, Content-Length: 1234.
  • Content-Encoding: İçeriğin hangi şifreleme ile kodlandığını belirtir. Örneğin, Content-Encoding: gzip.
  • Content-Language: İçeriğin dilini belirtir. Örneğin, Content-Language: en-US.
  • Last-Modified: İçeriğin en son ne zaman değiştirildiğini belirtir. Örneğin, Last-Modified: Tue, 25 Jun 2024 15:30:00 GMT.

Diğer Önemli Başlıklar

  • ETag: İçeriğin belirli bir sürümünü tanımlayan benzersiz bir tanımlayıcıdır. Örneğin, ETag: "686897696a7c876b7e".
  • If-None-Match: ETag ile uyumlu içerik olup olmadığını kontrol eder. Örneğin, If-None-Match: "686897696a7c876b7e".
  • Transfer-Encoding: Yanıtın parçalar halinde gönderileceğini belirtir. Örneğin, Transfer-Encoding: chunked.
  • Upgrade: Bağlantının bir protokol yükseltmesi gerektirdiğini belirtir. Örneğin, Upgrade: HTTP/2.0.

Bu başlıklar, istemci ve sunucu arasındaki iletişimin çeşitli yönlerini yönetmek ve optimize etmek için kullanılır. Her başlık, belirli bir görevi yerine getirerek web iletişimini daha güvenli, hızlı ve etkili hale getir.

Örnek HTTP İsteği ve Yanıtı

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

HTTP/1.1 200 OK
Date: Thu, 04 Jul 2024 12:00:00 GMT
Server: Apache/2.4.41 (Ubuntu)
Last-Modified: Tue, 25 Jun 2024 15:30:00 GMT
Content-Length: 6703
Content-Type: text/html

<!DOCTYPE html>
<html>
<head>
<title>Example Page</title>
</head>
<body>
<h1>Welcome to Example Page</h1>
<p>This is a sample HTML content.</p>
</body>
</html>

Bu örneklerde, HTTP başlıkları isteğin ve yanıtın nasıl işleneceğini belirten çeşitli bilgileri içerir. Başlıklar, istemci ve sunucu arasında etkin ve güvenli bir iletişim sağlamak için kritik öneme sahiptir.

En Yaygın 7 HTTP Headers Türleri ve Görevleri

En yaygın kullanılan HTTP başlıkları, istemci ve sunucu arasındaki iletişimi düzenlemek ve optimize etmek için kritik önem taşır. İşte en yaygın 7 HTTP başlığı ve görevleri:

1. Host

  • Görev: İsteğin hedeflendiği sunucu adını ve opsiyonel olarak port numarasını belirtir.
  • Kullanım: HTTP/1.1 ile zorunlu hale gelmiştir.
  • ÖrnekHost: www.example.com

2. User-Agent

  • Görev: İsteği gönderen istemci yazılımı hakkında bilgi verir. Genellikle tarayıcı adı, versiyonu ve işletim sistemi bilgilerini içerir.
  • Kullanım: Sunucular, isteği yapan istemciye göre yanıtlarını özelleştirmek için kullanabilir.
  • ÖrnekUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36

3. Accept

  • Görev: İstemcinin kabul edebileceği içerik türlerini belirtir.
  • Kullanım: Sunucu, istemcinin belirttiği içerik türüne göre uygun yanıtı seçer.
  • ÖrnekAccept: text/html, application/xhtml+xml, application/xml;q=0.9, image/webp,*/*;q=0.8

4. Content-Type

  • Görev: İsteğin veya yanıtın gövdesinin içerik türünü belirtir.
  • Kullanım: Sunucu ve istemci, verinin nasıl işleneceğini anlamak için bu başlığı kullanır.
  • ÖrnekContent-Type: text/html; charset=UTF-8

5. Authorization

  • Görev: Kimlik doğrulama bilgilerini içerir.
  • Kullanım: İstemcinin belirli kaynaklara erişim yetkisi olduğunu kanıtlamak için kullanılır.
  • ÖrnekAuthorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

6. Cache-Control

  • Görev: Önbellekleme politikalarını belirtir.
  • Kullanım: Hem istemci hem de sunucu tarafında önbellekleme davranışını kontrol etmek için kullanılır.
  • ÖrnekCache-Control: no-cache

7. Set-Cookie

  • Görev: İstemciye bir çerez (cookie) göndermek için kullanılır.
  • Kullanım: İstemci, sonraki isteklerinde bu çerezi sunucuya geri gönderir. Oturum yönetimi ve kullanıcı izleme gibi amaçlarla kullanılır.
  • ÖrnekSet-Cookie: sessionId=abc123; Path=/; HttpOnly

Bu başlıklar, HTTP iletişiminin önemli bileşenleridir ve web uygulamalarının doğru ve verimli çalışması için kritik öneme sahiptir.

HTTP Header Hakkında Sıkça Sorulan Sorular

HTTP başlıkları (headers) hakkında sıkça sorulan sorular ve yanıtları:

User-Agent Başlığı Ne İşe Yarar?

User-Agent başlığı, istemci hakkında bilgi verir, genellikle tarayıcı adı, versiyonu ve işletim sistemi bilgilerini içerir. Bu bilgi, sunucunun istemciye göre uygun yanıtı seçmesine yardımcı olabilir.

Content-Type Başlığı Neden Önemlidir?

Content-Type başlığı, isteğin veya yanıtın gövdesinin (body) içerik türünü belirtir. Bu, istemci ve sunucunun veriyi nasıl işleyip görüntüleyeceğini anlamaları için kritiktir. Örneğin, text/html HTML içeriği olduğunu belirtirken, application/json JSON verisi olduğunu belirtir.

Authorization Başlığı Nasıl Kullanılır?

Authorization başlığı, kimlik doğrulama bilgilerini içerir ve istemcinin belirli kaynaklara erişim yetkisi olduğunu kanıtlar. Örneğin, Basic kimlik doğrulama türünde kullanıcı adı ve şifreyi base64 ile kodlayarak gönderir.

HTTP Başlıkları Nasıl Görüntülenir?

HTTP başlıklarını görüntülemek için tarayıcı geliştirici araçları (Developer Tools) kullanılabilir. Chrome, Firefox gibi tarayıcılarda F12 tuşuna basarak geliştirici araçlarını açabilir ve Network sekmesinde istek ve yanıt başlıklarını inceleyebilirsiniz.

Set-Cookie Başlığı Ne İşe Yarar?

Set-Cookie başlığı, sunucunun istemciye bir çerez (cookie) göndermesi için kullanılır. Bu çerez, istemci tarafından sonraki isteklerde sunucuya geri gönderilir ve oturum yönetimi, kullanıcı izleme gibi işlemler için kullanılır.

HTTP Başlıkları Güvenlik İçin Nasıl Kullanılır?

HTTP başlıkları, güvenlik önlemleri almak için kullanılabilir. Örneğin:

  • Strict-Transport-Security (HSTS) başlığı, tarayıcıya yalnızca HTTPS üzerinden iletişim kurulmasını zorunlu kılar.
  • Content-Security-Policy (CSP) başlığı, belirli içerik kaynaklarına izin vererek XSS (Cross-Site Scripting) saldırılarını önler.
  • X-Content-Type-Options başlığı, MIME türü algılamasını (sniffing) kapatarak güvenlik risklerini azaltır.

Cache-Control Başlığı Nasıl Çalışır?

Cache-Control başlığı, istemci ve sunucuların önbellekleme politikalarını belirler. Örneğin, no-cache önbelleklemeyi devre dışı bırakır, max-age=3600 ise içeriğin bir saat boyunca önbellekte saklanabileceğini belirtir.

HTTP/2 ve HTTP/1.1 Başlıkları Arasında Fark Var mı?

HTTP/2, HTTP/1.1 ile aynı başlıkları kullanır, ancak başlıkların iletiminde bazı farklar vardır. HTTP/2, başlıkları sıkıştırır ve binarize eder, böylece daha hızlı ve verimli iletim sağlar. Ayrıca, HTTP/2 ile başlıkların yeniden kullanımı (header compression) ve akış kontrolü (stream prioritization) gibi iyileştirmeler vardır.

İlginizi Çekebilir