Ana içeriğe geç

Session Storage

Türkçe karşılığı
oturum depolama
Okunuşu
seşın storic

Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/session-storage

Kısaca

Session storage, metni anahtar-değer çiftleri olarak yalnızca tek bir sekme için saklayan tarayıcı özelliğidir; veri yenilemede kalır, sekme kapanınca silinir.

Session storage nedir?

JavaScript'te sessionStorage nesnesiyle kullanılan session storage, local storage ile birlikte Web Storage API'nin parçasıdır. Metinleri metin anahtarlar altında, aynı küçük metot setiyle saklar: setItem, getItem, removeItem ve clear. Nesneler JSON.stringify ile kaydedilir ve JSON.parse ile geri okunur; tarayıcılar genellikle origin başına yaklaşık 5 MB'a izin verir.

Onu ayıran şey ömrüdür. Veri, tek bir tarayıcı sekmesindeki tek bir origin'e aittir: sayfa yenilemelerinde ve ileri geri gezinmede kalır, ama her yeni sekme aynı site için bile kendi boş deposuyla başlar ve sekmeyi kapatmak veriyi siler. Sekmeden window.open ile açılan bir sayfa bir kopyayla başlar, ama ondan sonra ikisi birbirinden ayrıdır. Bu da onu yalnızca o anki ziyaret boyunca önemli olan durumlar için uygun kılar: yarısı doldurulmuş çok adımlı bir form, bir kaydırma konumu ya da sekme başına bir kez gösterilen bir mesaj gibi.

Session storage'ı tek bir tarayıcı sekmesine yapıştırılmış bir not kâğıdı gibi düşünebilirsiniz: orada çalışırken işe yarar, sekmeyi kapatınca atılır. Local storage gibi sayfadaki her script tarafından okunabilir; bu yüzden bir XSS (cross-site scripting) saldırısı içindekileri çalabilir ve parola ya da token saklamak için uygun bir yer değildir.

"Session" sözcüğü kafa karıştırır. Session storage'ın sunucudaki oturum açma (login) oturumuyla ya da oturum çerezleriyle (session cookie) bir ilgisi yoktur: bir oturum çerezi sitenin bütün sekmelerince paylaşılır, her istekle sunucuya gönderilir ve tarayıcı kapanana kadar yaşar; sessionStorage ise tarayıcıda kalır, tek bir sekmeye aittir ve hiçbir yere gönderilmez. Local storage ile karşılaştırıldığında API tamamen aynıdır; yalnızca ömür ve kapsam farklıdır.

Önemli noktalar

  • Session storage, metin anahtar-değer çiftlerini tarayıcıda tek bir sekme için saklar.
  • Veri sayfa yenilemelerinde kalır, ama sekme kapanınca silinir.
  • API'si localStorage ile aynıdır: setItem, getItem, removeItem ve clear.
  • Her yeni sekme, aynı site için bile kendi deposunu alır.
  • Sunucu oturumlarıyla ilgisi yoktur ve isteklerle hiçbir zaman gönderilmez.

Örnek

Bir form taslağını yalnızca o anki sekme için saklamakjavascript
const form = document.querySelector("#signup");

// Save the fields on every change, for this tab only
form.addEventListener("input", () => {
  const data = Object.fromEntries(new FormData(form));
  sessionStorage.setItem("signup-draft", JSON.stringify(data));
});

// After a reload the draft comes back; a new tab starts empty
const draft = JSON.parse(sessionStorage.getItem("signup-draft") ?? "{}");
for (const [name, value] of Object.entries(draft)) {
  if (form.elements[name]) form.elements[name].value = value;
}

Sık sorulan sorular

sessionStorage ile localStorage arasındaki fark nedir?

İkisi aynı API'yi paylaşır. localStorage verisi bir sitenin bütün sekmelerince paylaşılır ve silinene kadar kalır; sessionStorage verisi ise tek bir sekmeye aittir ve o sekme kapanınca silinir.

sessionStorage sayfa yenilendiğinde kalır mı?

Evet. Sayfayı yenilemek ya da aynı sekmede başka bir sayfaya gidip geri dönmek veriyi korur. Sekmeyi ya da tarayıcıyı kapatmak ise onu siler.

sessionStorage sekmeler arasında paylaşılır mı?

Hayır. Aynı site için bile her sekmenin kendi deposu vardır. Sekmeler arasında veri paylaşmak için localStorage, IndexedDB ya da bir BroadcastChannel kullanın.

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar