Thuta Learning
How the Web Works
IntermediateWeb Developmentbeginner

Cookies နှင့် Sessions

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Cookies နှင့် Sessions concept ကို နားလည်ရှင်းပြနိုင်ရန်
  • Diagram ကို ဖတ်ပြီး request/data/event ဘယ်လိုစီးဆင်းသလဲ ခြေရာခံနိုင်ရန်
  • ဒီ piece က web architecture တစ်ခုလုံးထဲမှာ ဘယ်လို ဆက်စပ်နေသလဲ ရှင်းပြနိုင်ရန်

နားလည်ထားရမယ့် အချက်

HTTP သည် stateless ဖြစ်သည် - request တစ်ခုစီသည် ယခင် request ကို built-in memory မရှိပါ။ ဤ gap ကို ဖြေရှင်းရန် cookie နှင့် session ပေါ်လာသည်။

cookie သည် server က browser ကို သိမ်းစေသော data အသေးစား ဖြစ်ပြီး session ID၊ preference၊ analytics (သို့) security check အတွက် သုံးနိုင်သည် - cookie အားလုံး tracking cookie မဟုတ်ပါ။

  • Secure - HTTPS မှသာ ပို့သည်
  • HttpOnly - JavaScript က ဖတ်၍မရ
  • SameSite - cross-site ပို့ခြင်းကို ကန့်သတ်သည်
  • Expires - browser က မည်မျှကြာအောင် ထားမည်

session သည် server-side state ဖြစ်ပြီး browser သည် ID တစ်ခုသာ ပါဝင်သော session cookie ကို ကိုင်ဆောင်သည်။ server သည် ID ဖြင့် session store တွင် ရှာဖွေသည်။

AspectCookie vs Session
Where the data livesCookie: browser တွင် သိမ်း။ Session: server ပေါ်တွင် သိမ်းပြီး ID ဖြင့် ရည်ညွှန်းသည်။
What the browser holdsCookie: data အစစ် (သို့) ID။ Session: ID တစ်ခုသာ; state အစစ်သည် server ပေါ်တွင်ရှိသည်။
Typical size limitCookie: cookie တစ်ခုလျှင် KB အနည်းငယ်။ Session: server-side store ခွင့်ပြုသလောက်။
RevocationCookie: browser (သို့) expiry ဖြင့် ရှင်း။ Session: server က ချက်ချင်း invalidate လုပ်နိုင်သည်။
Cookie
site တူညီအား နောင် request များတွင် ပြန်ပို့ရန် browser ကို သိမ်းဆည်းစေသော server မှ တောင်းဆိုသည့် data အသေးစား
Session
session cookie တွင် သိမ်းထားသော ID တစ်ခုဖြင့် ရည်ညွှန်းလေ့ရှိသည့် user တစ်ဦးချင်းစီနှင့် ဆက်စပ်သော server-side state
text
SESSION MODEL
-------------
SESSION MODEL
--------------

  Browser              Server              Session Store
  --------             ------              -------------
  Cookie: sid=abc123 -> receives sid ->    looks up "abc123"
                                        -> finds: Alice, cart: 3

  The cookie itself holds only an ID.
  The real user state lives in the session store on the server.

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

site တစ်ခု၏ developer tools ရှိ cookie များကို ကြည့်ပါ - session cookie တစ်ခုကို တွေ့ရလေ့ရှိသည်။ browser သည် ၎င်းကို request တိုင်း အလိုအလျောက် ပို့ပေးသည်။

အောက်ပါ code သည် memory session store အသေးစားကို simulate လုပ်သည်: cookie ID ရှိပြီးသားလား စစ်ပြီး existing (သို့) new session ဟု ဆုံးဖြတ်သည်။

အတူတူ စမ်းရေးကြည့်မယ်

javascript
function createSessionSimulator() {
  const store = new Map();
  let nextId = 1;

  return function handleRequest(cookieId) {
    if (cookieId && store.has(cookieId)) {
      return { status: "existing session", sessionId: cookieId };
    }
    const newId = "sess_" + nextId++;
    store.set(newId, { createdAt: nextId });
    return { status: "new session", sessionId: newId };
  };
}

const handleRequest = createSessionSimulator();

const incoming = [undefined, undefined, "sess_1", undefined, "sess_1", "sess_2"];
incoming.forEach((cookieId, i) => {
  console.log(`Request ${i + 1} (cookie: ${cookieId ?? "none"}) ->`, handleRequest(cookieId));
});
You should see
ရလဒ်ခြောက်ခုကို အစီအစဉ်အတိုင်း log ထုတ်သည်: session အသစ်နှစ်ခု (sess_1, sess_2)၊ sess_1 ကို existing အဖြစ် ထပ်တွေ့ခြင်း၊ session အသစ်တတိယ (sess_3)၊ ပြီးနောက် sess_1 နှင့် sess_2 ကို existing အဖြစ် ထပ်တွေ့ခြင်း။

၅ မိနစ် စမ်းကြည့်

code ရှိ incoming request list ကို ပြင်ဆင်ပြီး ဘယ်တော့မှ မထုတ်ပေးဖူးသော cookie ID တစ်ခုပါသော request တစ်ခု ထည့်ကာ run မလုပ်မီ new (သို့) existing ဖြစ်မည်ကို ခန့်မှန်းကြည့်ပါ။

သတိလေးတစ်ချက်

cookie တိုင်းကို tracking cookie ဟု ယူဆခြင်း - အများစုသည် login ထားဆဲဖြစ်ခြင်းကဲ့သို့ အခြေခံ function အတွက် မရှိမဖြစ် ဖြစ်သည်။

session cookie သည် များသောအားဖြင့် reference တစ်ခုသာဖြစ်ကြောင်း မေ့လျော့ခြင်း - ၎င်းကို ပျောက်ဆုံး (သို့) ဖျက်လိုက်လျှင် data အစစ်ကို မဖျက်ဘဲ session ကို ရပ်တန့်စေနိုင်သည်။

MDN Web Docs - Using HTTP cookiesHow the Web Works

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • cookie တိုင်းကို tracking cookie ဟု ယူဆခြင်း - အများစုသည် login ထားဆဲဖြစ်ခြင်းကဲ့သို့ အခြေခံ function အတွက် မရှိမဖြစ် ဖြစ်သည်။
  • session cookie သည် များသောအားဖြင့် reference တစ်ခုသာဖြစ်ကြောင်း မေ့လျော့ခြင်း - ၎င်းကို ပျောက်ဆုံး (သို့) ဖျက်လိုက်လျှင် data အစစ်ကို မဖျက်ဘဲ session ကို ရပ်တန့်စေနိုင်သည်။
  • ဒီ course က system map တစ်ခုပါ — REST/DNS/Database/Security ကို နက်နက်ရှိုင်းရှိုင်း လေ့လာချင်ရင် API Tutorial, Cloud & Deployment, SQL, Cybersecurity tutorial တွေဆီ ဆက်သွားပါ။

လေ့ကျင့်ခန်း

code ရှိ incoming request list ကို ပြင်ဆင်ပြီး ဘယ်တော့မှ မထုတ်ပေးဖူးသော cookie ID တစ်ခုပါသော request တစ်ခု ထည့်ကာ run မလုပ်မီ new (သို့) existing ဖြစ်မည်ကို ခန့်မှန်းကြည့်ပါ။

You'll know it worked when: ရလဒ်ခြောက်ခုကို အစီအစဉ်အတိုင်း log ထုတ်သည်: session အသစ်နှစ်ခု (sess_1, sess_2)၊ sess_1 ကို existing အဖြစ် ထပ်တွေ့ခြင်း၊ session အသစ်တတိယ (sess_3)၊ ပြီးနောက် sess_1 နှင့် sess_2 ကို existing အဖြစ် ထပ်တွေ့ခြင်း။

Cookies နှင့် Sessions | Thuta Learning