Çerez nedir?

Web, bir web tarayıcısından web sitesine yapılan her isteğin ayrı olacak şekilde tasarlanmıştır. Web'in tasarım gereği "hafızası" yoktur. Bir web sayfasını her açtığınızda ziyaret ettiğiniz web sitesi, son oturumunuzun bilgilerini hatırlayamaz. İstekleri ve yanıtları izlemek için bir mekanizmaya gerek olmadığından bu, web'in verimli ve basit olmasını sağlar.

Ancak web'in unutkan yapısı da bir sorun teşkil eder. Örneğin, bulunduğunuz web sitesi az önce eklediğiniz öğeleri hatırlayamıyorsa alışveriş sepeti nasıl çalışabilir?

Çerezler bu sorunu çözmek için icat edildi.

Çerezler, web sitelerine hafıza sağlar

Bir web sitesindeki bir sayfayı ziyaret ettiğinizde web tarayıcınız, sayfaya dahil edilen kaynaklar (ör. HTML, CSS, JavaScript veya resimler) için web sitesinin sunucusuna istek gönderir.

Web tarayıcıları ve web siteleri, HTTP protokolünü izleyerek etkileşim kurar. Bu, iletişim için standartlaştırılmış bir kurallar kümesidir.

Web sitesi sunucusu, bir kaynağa yönelik HTTP isteğine yanıt olarak kaynağın yanı sıra başlıklar adı verilen ek bilgiler de ekleyebilir. HTTP yanıtına dahil edilen bir Set-Cookie başlığı, tarayıcınızda bir metin (ad ve değer) depolanmasını sağlar. Buna çerez denir. Örneğin, Set-Cookie: cat=tabby yanıt üstbilgisi tarayıcınızda "cat" adında ve "tabby" değerinde bir çerez saklamasını söyler.

Bu çerez ayarlandıktan sonra, tarayıcınızdan web sitesine gönderilen sonraki istekler Cookie: cat=tabby başlığını 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 varsayalım. Site size rastgele bir kedi resmi göstermek ve size hangi kedinin gösterildiğini kaydetmek istiyor.

Aşağıdaki adımlarda, çerezlerle bunun 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 sayfa HTML'sini işledikten sonra cats.example adresindeki cat.jpg dahil olmak üzere sayfadaki dosyaları ister.

https://cats.example/cat.jpg adresine gönderilen 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 üst bilgisinin yer aldığı bir HTTP yanıtı

3. Tarayıcı yanıt alır

Tarayıcınız resim dosyasını alır ve içinde bulunan Set-Cookie: cat=tabby başlığını işler.

Bir çerez saklanır: ad cat, değer tabby.

Dizüstü bilgisayardaki bir web tarayıcısında kurabiye kedisi.

4. Tarayıcı ek istekler gönderir

Artık tarayıcınız, cats.example adresine yapılan istekler için Cookie: cat=tabby üst bilgisini içeriyor.

Cookie: cat=tabby başlığıyla https://cats.example/cat.jpg adresine gönderilen bir HTTP isteği

cats.example web sunucusu bir istek aldığında çerezi işleyebilir ve bu değerle istediğini yapabilir (ör. size tekrar aynı tekir kedinin resmini göndermemesini sağlayabilir).

Çerez sürecinin tamamı şu şekildedir:

  1. Tarayıcınız, bir web sitesinin sunucusuna dosya isteği gönderir.
  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ı, sonraki her istekle birlikte çerezi Cookie: cat=tabby başlığında sunucuya gönderir.


Bir web tarayıcısı, cats.example ve cats.example arasındaki istekleri ve yanıtları gösteren, çerezlerin nasıl ayarlandığını ve gönderildiğini gösteren ardışık düzen şeması.

JavaScript ile çerezlere erişme

Önceki örnekte, çerez ayarlamak için Set-Cookie yanıt üstbilgisi kullanılmaktadır.

Çerezler, document.cookie yöntemi kullanılarak JavaScript ile de oluşturulabilir.

Demoyu deneyin: javascript-cookie.glitch.me.

Daha fazla bilgi: Belge: çerez mülkü.

Çerezlere neden ihtiyacımız var?

1994 yılında mühendis Lou Montulli, 1990'ların ortalarında en popüler web tarayıcısını geliştiren Netscape yazılım şirketinde çalışıyordu. Bu sırada MCI adlı bir telekomünikasyon şirketi, dünyanın ilk online mağazalarından biri için alışveriş sepeti özelliği geliştirmeye çalışıyordu. MCI, sorununu açıklamak için Montulli ile iletişime geçti. Montulli, HTTP'ye bir özellik ekleyerek yanıt verdi. Bu özellik, sitelerin kullanıcının web tarayıcısında az miktarda metin, bir ad ve değer (cart-id=123 gibi) depolamasını sağlıyordu. O zamanlar programcılar, veri iletişimine dahil edilen küçük bir ek bilgi parçası için "sihirli çerez" kelimesini kullandığından, bu öğeye "çerez" adını verdi.

Lou, HTTP çereziyle ilgili çalışmalarını bir haftadan kısa sürede tamamladı. Çerezlerin reklamcılık, giriş, ödemeler, sahtekarlık algılama ve diğer kritik web hizmetleri için temel olacağını bilmiyordu. Çerezler, çok basit bir teknoloji olmasına rağmen geniş kapsamlı yan etkileri vardır.

Çerezlerin kullanım alanları

Çerezler, tarayıcıda kullanıcıyla ilgili küçük miktarda bilgi depolayarak birden fazla istek arasında bir şeyi "hatırlamasını" sağlar. Çerezlerin birden çok kullanımı vardır:

  • Oturum yönetimi
    Bir web sitesinin kullanıcıyı tanımasına izin verir. Örneğin, farklı sayfalarda oturum açmış durumda kalmak için.
  • Kişiselleştirme
    Web sitesi deneyimini özelleştirmek için dil, tema veya en son görüntülenen öğeler gibi kullanıcı tercihlerini depolayın.
  • İzleme
    Geçmişte çerezler, web siteleri genelinde kullanıcı davranışlarını izlemek, hedeflenen 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ı olarak kullanılır.

Örneğin, bir online evcil hayvan mağazasındaki alışveriş sepetinize ait çerez, ürünleri listelemez. Bunun yerine, evcil hayvan mağazasının sunucu tarafındaki veri deposunda alışveriş sepetinizdeki ürünleri aramasına olanak tanıyan bir hesap kimliği sağlar.

Evcil hayvan mağazası sunucusuna gönderilen bir istek şuna benzer bir çerez üst bilgisi içerebilir:

Cookie: _cart=CART1.2.34567890.123456789

Sunucu daha sonra veri deposunda _cart hesabını arayabilir ve istekle ilgili diğer bilgileri ekleyebilir.

Daha fazla bilgi