Çerez nedir?

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

https://cats.example/cat.jpg adresine yapılan bir HTTP isteği

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.

https://cats.example/cat.jpg adresinden gelen ve Set-Cookie:
cat=tabby üstbilgisine sahip bir HTTP yanıtı

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.

Dizüstü bilgisayardaki web tarayıcısında cookie cat=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.

https://cats.example/cat.jpg adresine yapılan bir HTTP isteği ve Cookie: cat=tabby
başlığı

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:

  1. Tarayıcınız, bir web sitesinin sunucusundan dosya ister.
  2. Sunucu, isteğe yanıt olarak gönderdiği dosyayla birlikte Set-Cookie: cat=tabby gibi bir üstbilgi ekleyebilir.
  3. Tarayıcınız yanıtı aldığında çerezi depolar.
  4. Tarayıcınız, sonraki her istekte çerezi sunucuya bir Cookie: cat=tabby üstbilgisinde gönderir.


Bir web tarayıcısı, cats.example ve cats.example arasındaki istekleri ve yanıtları gösteren sıra şeması. Çerezlerin nasıl ayarlandığını ve gönderildiğini gösterir.

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