HTTP'nin "Stateless" Doğası ve Durum Yönetimi Sorunu
Web geliştirmede karşılaşılan en temel mimari zorluk, kullanıcı etkileşimlerinde sürekliliği (persistence) sağlamaktır. Kullanıcı bir kez kimlik doğrulaması yapar, onlarca farklı sayfada gezinir ve her adımda sunucu tarafından tanınmayı bekler. Ancak web'in temelini oluşturan HTTP (Hypertext Transfer Protocol), doğası gereği "stateless" (durum bilgisiz) bir protokoldür.
Stateless protokol yapısında, sunucu ile istemci (client) arasındaki her bir İstek-Yanıt (Request-Response) döngüsü, bir öncekinden tamamen bağımsızdır. Sunucu, kendisine gelen bir isteğin daha önce kimlik doğrulaması yapmış bir kullanıcıdan mı, yoksa sisteme ilk kez erişen anonim bir cihazdan mı geldiğini kendi başına ayırt edemez. Teknik olarak, her yeni TCP bağlantısı veya HTTP isteği, sunucu için "yeni bir başlangıç" anlamını taşır.
Bu mimari yapı, sunucunun kaynak yönetimini kolaylaştırsa da (çünkü sunucu milyonlarca aktif bağlantının durumunu protokol seviyesinde takip etmek zorunda kalmaz), uygulama seviyesinde ciddi sorunlara yol açar:
Kimlik Doğrulama Kaybı: Kullanıcı
/loginrotasında başarılı olsa bile,/dashboardrotasına geçtiği an sunucu bu başarıyı "unutur".Veri Tutarsızlığı: Sepete ürün ekleme veya form doldurma gibi çok adımlı işlemler, istekler arası veri aktarımı yapılamadığı için kesintiye uğrar.
İşte bu protokol seviyesindeki "hafıza yoksunluğunu" aşmak ve uygulama seviyesinde "stateful" (durum bilgisi olan) bir yapı kurmak için iki temel mekanizma geliştirilmiştir: Cookies (Çerezler) ve Sessions (Oturumlar). Çerezler bu durum bilgisini istemci tarafında (browser) muhafaza ederken, oturumlar bu veriyi sunucu tarafındaki güvenli bir depolama alanında tutarak her isteğin bir "kimlik kartı" ile gelmesini sağlar.
Cookies (Çerezler)
Çerezler, sunucu tarafından oluşturulan ve HTTP yanıt başlıkları (Response Headers) içindeki Set-Cookie komutuyla tarayıcıya emanet edilen küçük veri paketleridir. Tarayıcı bu paketleri belleğine veya diskine kaydeder; ilgili domain’e yapılan her yeni istekte, bu verileri Cookie başlığıyla sunucuya otomatik olarak geri gönderir.