localStorage, sessionStorage va cookies qanday ishlaydi?
MiddleJavaScript #javascript #browser #storage
Savol
localStorage, sessionStorage va cookies bir-biridan nimasi bilan farq qiladi?
Qisqa javob
Uchalasi ham ma'lumotlarni mijozda satr ko'rinishida saqlaydi, lekin yashash muddati, hajmi va serverga yuborilishi bilan farq qiladi: localStorage abadiy yashaydi, sessionStorage — vkladka yopilguncha, cookies esa — har bir HTTP-so'rov bilan avtomatik ravishda serverga ketadigan yagona narsa.
Batafsil javob
localStorage— ma'lumotlarni amal qilish muddatisiz saqlaydi (qo'lda yokiclear()orqali o'chirilmaguncha). Ma'lumotlar bitta manba (origin)ning barcha vkladkalarida mavjud. Hajmi — odatda ~5-10 MB. Faqat JavaScript orqali mavjud, serverga yuborilmaydi.sessionStorage—localStoragebilan bir xil API, lekin ma'lumotlar faqat bitta vkladka doirasida yashaydi va u yopilganda o'chiriladi. Bir saytning turli vkladkalarisessionStorageni bir-biri bilan bo'lishmaydi.- Cookies — tarixan eng qadimgi mexanizm. Asosiy farq: cookies avtomatik ravishda har bir HTTP-so'rovga o'sha domenga (agar
path/domainbilan cheklanmagan bo'lsa) biriktiriladi, bu ularni serverda autentifikatsiya uchun yaroqli qiladi, lekin har bir so'rovning og'irligini oshiradi. Hajmi — cookie boshiga ~4 KB. O'z yashash muddatiga (expires/max-age) va xavfsizlik flaglariga ega:HttpOnly— JavaScript'dan mavjud emas (XSS'dan himoya).Secure— faqat HTTPS orqali uzatiladi.SameSite— kross-sayt so'rovlarida cookie yuborilishini cheklaydi (CSRF'dan himoya).
SSR (Nuxt) uchun muhim: localStorage/sessionStorage faqat brauzerda mavjud va serverda mavjud emas, cookies esa serverda ham mavjud (so'rov sarlavhalari orqali), shuning uchun SSR-ilovalarda autentifikatsiya tokenini saqlash uchun odatda aynan cookies ishlatiladi.
Misol
// localStorage — brauzer yopilishidan omon qoladi
localStorage.setItem('theme', 'dark')
localStorage.getItem('theme') // brauzer qayta ishga tushirilgandan keyin ham 'dark'
// sessionStorage — vkladka bilan birga o'ladi
sessionStorage.setItem('draft', 'izoh qoralamasi')
// cookie — yashash muddatini cheklash mumkin va serverga ketadi
document.cookie = 'token=abc123; max-age=3600; Secure; SameSite=Strict'
Qo'shimcha savollar
- Nega SSR-ilovada autentifikatsiya tokeni ko'pincha
localStorageda emas, cookie'da saqlanadi? HttpOnlynima va u qanday hujumdan himoya qiladi?SameSite=Strict/Lax/Noneboshqa saytdan o'tishda cookie yuborilishiga qanday ta'sir qiladi?