İletişim

HTTP İstek ve Yanıt Nedir?

Kısa tanım

HTTP istek ve yanıt, web'deki iletişimin temel birimidir: istemci (tarayıcı, uygulama veya bot) bir sunucuya istek gönderir, sunucu da bir yanıtla karşılık verir. İstek; metot, hedef adres, başlıklar ve isteğe bağlı bir gövdeden oluşur. Yanıt ise bir durum kodu, başlıklar ve çoğu zaman HTML, JSON veya görsel gibi bir gövde içerir. Mesajın taşıdığı asıl veriye payload denir.

Diğer adları: HTTP isteği, HTTP yanıtı, request, response, payload, HTTP mesajı

İstemcinin metot, adres ve başlıklarla istek gönderdiği, sunucunun durum kodu, başlık ve gövdeyle yanıt verdiği döngü

Web'in temel diyaloğu

Bir sayfayı açtığınızda tarayıcı tek bir istek göndermez. Önce HTML'i ister, sonra HTML'de geçen her CSS, JavaScript, font ve görsel için ayrı istekler atar; orta büyüklükte bir sayfa kolayca onlarca isteğe ulaşır. Her biri aynı kalıbı izler: istemci sorar, sunucu cevap verir. HTTP durumsuzdur; sunucu her isteği önceki isteklerden bağımsız olarak değerlendirir. Kullanıcının oturum açmış olduğu gibi bilgiler, her istekte çerezler veya token'larla yeniden taşınır.

Bir isteğin anatomisi

HTTP/1.1'de mesaj düz metindir ve dört parçadan oluşur: istek satırı, başlık satırları, boş bir satır ve isteğe bağlı gövde.

POST /api/iletisim?kaynak=footer HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (...)
Content-Type: application/json
Content-Length: 65
Cookie: oturum=a81f...

{"ad": "Ayşe", "eposta": "[email protected]", "mesaj": "Merhaba"}
  • İstek satırı: HTTP metodu (POST), hedef (/api/iletisim ve sorgu parametresi kaynak=footer) ve protokol sürümü.
  • Başlıklar: İstek hakkında bilgi verir. Host HTTP/1.1'de zorunludur; aynı IP adresindeki birçok sitenin hangisinin istendiğini belirtir. Content-Type gövdenin biçimini bildirir.
  • Gövde: Sunucuya gönderilen veri. GET isteklerinde genellikle gövde bulunmaz; gerekli bilgi URL'de taşınır.

Bir yanıtın anatomisi

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8
Content-Length: 31
Cache-Control: no-store
Set-Cookie: form_gonderildi=1; Path=/; Secure; HttpOnly

{"durum": "alindi", "id": 9137}

İlk satır durum satırıdır: sürüm, üç haneli durum kodu ve isteğe bağlı açıklama. Ardından gelen başlıklar; içeriğin türünü, önbellekte nasıl tutulacağını, tarayıcıya hangi çerezin yazılacağını söyler. Boş satırdan sonra gövde gelir: bir HTML sayfası, JSON verisi, bir görsel ya da hiçbir şey.

Payload ne demek?

Payload, mesajın “yükü”, yani asıl taşınan veridir: yukarıdaki örnekte form alanlarını içeren JSON nesnesi. Başlıklar bu yükü tarif eder; Content-Type ne olduğunu, Content-Length kaç bayt olduğunu, Content-Encoding sıkıştırılıp sıkıştırılmadığını söyler. Sunucular kabul ettikleri payload boyutunu sınırlar; sınırı aşan bir istek 413 Content Too Large yanıtı alabilir. Güvenlik açısından payload her zaman güvenilmeyen girdidir ve doğrulanmadan kullanılmamalıdır.

HTTP/2 ve HTTP/3'te ne değişir?

Metotlar, durum kodları ve başlıkların anlamı tüm sürümlerde aynıdır; bunlar RFC 9110'da sürümden bağımsız olarak tanımlanır. Değişen, mesajın kablo üzerindeki biçimidir. HTTP/2 ve HTTP/3'te mesajlar ikili çerçevelere bölünür, başlık adları küçük harfle yazılır, istek satırının yerini :method ve :path gibi sözde başlıklar alır ve birçok istek tek bir bağlantı üzerinde aynı anda taşınabilir.

Trafiği kendi gözünüzle görmek

Tarayıcı geliştirici araçlarındaki Ağ (Network) sekmesi her isteğin başlıklarını, payload'unu, yanıtını ve süresini gösterir. Komut satırında curl -i https://www.example.com/ yanıt başlıklarını, curl -v ise gönderilen isteği de yazdırır. Bir sayfanın durum kodunu ve yönlendirme zincirini hızlıca görmek için SEO Analiz Aracı da kullanılabilir.

İlgili terimler

← Sözlüğe dön