Web, bir web tarayıcısından web sitesine yapılan her isteğin ayrı olması için tasarlanmıştır. Web, tasarım gereği "hafızaya" sahip değildir. Bir web sayfasını her açtığınızda, ziyaret ettiğiniz web sitesi son oturumunuzdaki bilgileri hatırlayamaz. Bu, istekleri ve yanıtları izlemek için bir mekanizmaya gerek olmadığından web'in verimli olmasına yardımcı olur.
Ancak web'in unutkan yapısı da bir sorun teşkil ediyor. Örneğin, bulunduğunuz web sitesi, sepete eklediğiniz öğeleri hatırlamıyorsa alışveriş sepeti nasıl çalışabilir?
Çerezler bu sorunu çözmek için icat edildi.
Çerezler, web sitelerine hafıza kazandırır
Bir web sitesindeki bir sayfayı ziyaret ettiğinizde web tarayıcınız, sayfada bulunan kaynaklar (ör. HTML, CSS, JavaScript veya resimler) için web sitesinin sunucusuna istekte bulunur.
Web tarayıcıları ve web siteleri, HTTP protokolünü izleyerek etkileşim kurar. Bu, iletişim için standartlaştırılmış bir kural kümesidir.
Web sitesi sunucusu, bir kaynak için yapılan HTTP isteğine yanıt olarak kaynağın kendisiyle birlikte başlıklar adı verilen ek bilgiler ekleyebilir. HTTP yanıtıyla birlikte gönderilen bir Set-Cookie
başlığı, tarayıcınıza bir adı ve değeri içeren bazı metinleri depolamasını söyler. Buna çerez denir. Örneğin, Set-Cookie: cat=tabby
yanıt üstbilgisi, tarayıcınıza "cat" adlı ve "tabby" değerli bir çerez depolamasını söyler.
Bu çerez ayarlandıktan sonra, tarayıcınızın web sitesine yaptığı sonraki istekler Cookie: cat=tabby
üstbilgisini içerir. Web sitesinin sunucusu, istek başlığındaki çereze erişebilir ve değeri kullanabilir.
Çerezlerin işleyiş şekli: adım adım
cats.example
web sitesini ziyaret ettiğinizi düşünün. Site size rastgele bir kedi resmi göstermek ve hangi kedinin gösterildiğinin kaydını tutmak istiyor.
Aşağıdaki adımlarda bunun çerezlerle nasıl yapılabileceği açıklanmaktadır.
1. Tarayıcı bir dosya ister
cats.example
web sitesinin ana sayfasını ziyaret edersiniz.
Tarayıcınız ana sayfanın HTML'sini işledikten sonra sayfadaki dosyaları (cats.example
dahil) cats.example
adresinden ister.cat.jpg
2. Web sitesi sunucusu yanıt verir
cats.example
adresindeki sunucu, cat.jpg
resim dosyasıyla yanıt verir.
Sunucu, yanıtla birlikte bir başlık ekler: Set-Cookie: cat=tabby
.
3. Tarayıcı yanıtı alır
Tarayıcınız resim dosyasını alır ve Set-Cookie: cat=tabby
header'ı işler.
Bir çerez saklanır: ad cat
, değer tabby
.
4. Tarayıcı ek istekler gönderiyor
Tarayıcınız artık cats.example
adresine yapılan isteklerde Cookie: cat=tabby
üst bilgisini içeriyor.
cats.example
web sunucusu bir istek aldığında çerezi işleyebilir ve bu değerle istediğini yapabilir (ör. size aynı tekir kedinin resmini tekrar göndermediğinden emin olabilir).
Çerezlerle ilgili tüm süreç şu şekildedir:
- Tarayıcınız, bir web sitesinin sunucusundan dosya ister.
- Sunucu, isteğe yanıt olarak gönderdiği dosyayla birlikte
Set-Cookie: cat=tabby
gibi bir üstbilgi ekleyebilir. - Tarayıcınız yanıtı aldığında çerezi depolar.
- Tarayıcınız, sonraki her istekte çerezi sunucuya bir
Cookie: cat=tabby
üstbilgisinde gönderir.
JavaScript ile çerezlere erişme
Önceki örnekte, çerez ayarlamak için Set-Cookie
yanıt üstbilgisi kullanılıyor.
Çerezler, document.cookie
yöntemi kullanılarak JavaScript ile de oluşturulabilir.
Demoyu deneyin: javascript-cookie.glitch.me.
Daha fazla bilgi: Belge: çerez özelliği.
Neden çerezlere ihtiyacımız var?
1994'te mühendis Lou Montulli, 1990'ların ortasında en popüler web tarayıcısını geliştiren Netscape adlı yazılım şirketinde çalışıyordu.
Bu sırada bir telekomünikasyon şirketi olan MCI, dünyanın ilk online mağazalarından biri için alışveriş sepeti oluşturmaya çalışıyordu. MCI, Montulli ile iletişime geçerek sorunlarını açıkladı. Montulli, HTTP'ye bir özellik ekleyerek yanıt verdi. Bu özellik, bir sitenin kullanıcının web tarayıcısında az miktarda metin (ad ve değer) depolamasını sağlıyordu. Örneğin, cart-id=123
. O günlerde programcılar veri iletişimiyle birlikte gönderilen küçük bir ek bilgi parçası için "sihirli çerez" kelimesini kullandığından, bu küçük bilgi parçasına "çerez" adını verdi.
Montulli, HTTP çerezleriyle ilgili çalışmasını bir haftadan kısa bir sürede tamamladı. Ancak çerezlerin reklamcılık, oturum açma, ödemeler ve sahtekarlık tespiti gibi kritik web platformu özelliklerinin temelini oluşturacağını bilmiyordu. Çerezler, görünüşte basit bir teknoloji olsa da çok geniş kapsamlı yan etkilere sahiptir.
Çerezlerin kullanım alanları
Çerezler, tarayıcının kullanıcı hakkında az miktarda bilgi depolamasına ve birden fazla istekte bir şeyi "hatırlamasına" olanak tanır. Çerezlerin birden çok kullanım alanı vardır:
- Oturum yönetimi
Örneğin, bir web sitesinin kullanıcıyı tanımasına izin vererek farklı sayfalarda oturum açılmış durumu koruyun. - Kişiselleştirme
Web sitesi deneyimini özelleştirmek için dil, tema veya son görüntülenen öğeler gibi kullanıcı tercihlerini saklayın. - İzleme
Geçmişte çerezler, kullanıcı davranışlarını web sitelerinde izlemek, hedefli reklamcılık ve diğer kullanım alanları için kullanılıyordu.
Çerezler, bilgileri doğrudan depolamak yerine çoğunlukla tanımlayıcılar için kullanılır.
Örneğin, online bir evcil hayvan mağazasındaki alışveriş sepetiniz için kullanılan çerez, ürünleri listelemez. Bunun yerine, evcil hayvan mağazasının sunucu tarafındaki veri depolama alanında sepetinizde neler olduğunu aramasına olanak tanıyan bir hesap kimliği sağlar.
Evcil hayvan dükkanı sunucusuna yapılan bir istek şu gibi bir çerez üst bilgisi içerebilir:
Cookie: _cart=CART1.2.34567890.123456789
Ardından sunucu, veri deposunda _cart
hesabını arayabilir ve istekle ilgili diğer bilgileri ekleyebilir.
Daha fazla bilgi
- Çerez özellikleri
- Üçüncü taraf çerezleri nedir?
- HTTP isteği ve yanıtı
- Çerez araçları
- Çerez demoları
- HTTP çerezlerini kullanma
- The Magic Cookie: How Lou Montulli cured the Web's amnesia (Sihirli Çerez: Lou Montulli, Web'in hafıza kaybını nasıl iyileştirdi?)
- HTTP çerezleri (orijinal spesifikasyon)
- HTTP çerezleri veya protokollerin nasıl tasarlanmaması gerektiği