Session Storage
- Türkçe karşılığı
- oturum depolama
- Okunuşu
- seşın storic
Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.
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
localStorageile aynıdır:setItem,getItem,removeItemveclear. - 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
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
- Local StorageWeb Geliştirme, s. 34Local storage, bir sitenin kullanıcının cihazında anahtar-değer çiftleriyle metin saklamasını sağlayan tarayıcı özelliğidir; veri tarayıcı kapansa da kalır.
- CookieWeb Geliştirme, s. 11Cookie, bir web sitesinin tarayıcıdan saklamasını ve sonraki isteklerle geri göndermesini istediği, çoğunlukla oturum açık tutmak için kullanılan küçük veridir.
- OturumBackend ve API'ler, s. 35Oturum, sunucunun bir kullanıcıyı birçok istek boyunca hatırlama yöntemidir; genellikle veriler sunucuda tutulur ve tarayıcıya bir oturum kimliği verilir.
- IndexedDBWeb Geliştirme, s. 28IndexedDB, web tarayıcılarına yerleşik bir veritabanıdır; dosyalar dahil büyük miktarda yapılandırılmış veriyi indeksler ve transaction'larla cihazda saklar.
- Web TarayıcısıWeb Geliştirme, s. 67Web tarayıcısı, sunuculardan web sayfalarını alıp HTML, CSS ve JavaScript'i ekranda gördüğünüz etkileşimli sayfalara dönüştüren uygulamadır.
- XSSGüvenlik, s. 54XSS, saldırganın güvenilir bir siteye kötü amaçlı JavaScript enjekte edip bu kodu diğer kullanıcıların tarayıcısında çalıştırmasına yol açan zafiyettir.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin