๐Ÿช[Stateful HTTP๋ฅผ ์œ„ํ•ด] ์ฟ ํ‚ค์™€ ์„ธ์…˜, ์บ์‹œ, local/Session Storage

junameeยท2021๋…„ 7์›” 7์ผ
0

๋„คํŠธ์›Œํฌ

๋ชฉ๋ก ๋ณด๊ธฐ
2/4
post-thumbnail

์ฟ ํ‚ค

HTTP๋Š” ๋ฌด์ƒํƒœ, ๋‹จ๊ธฐ๊ฐ„์—ฐ๊ฒฐ ํ”„๋กœํ† ์ฝœ์ด๋ผ ๊ฐ ์š”์ฒญ์— ๋Œ€ํ•ด ๋™์ผํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋‚ธ ์š”์ฒญ์ธ์ง€ ํŒ๋‹จ์ด ์–ด๋ ต๋‹ค. ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์—ฐ์†์‘๋‹ต์„ ํ•ด ๋™์ผํ•œ ์‚ฌ์šฉ์ž ์ ‘์† ์„ธ์…˜์ธ์ง€ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉ๋œ๋‹ค.

๋„ค์ด๋ฒ„์— ์ฒ˜์Œ ์ ‘์†ํ–ˆ์„ ๋•Œ, ์ฒซ ์‘๋‹ต ๋ฉ”์‹œ์ง€์— 'Set-Cookie'๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฟ ํ‚ค์—” ๋ณด์•ˆ๋ฌธ์ œ๋ฅผ ๋Œ€๋น„ํ•ด Expires ์œ ํšจ๊ธฐ๊ฐ„๊ณผ ์ฟ ํ‚ค๊ฐ€ ์ „์†ก๋˜๋Š” ์‚ฌ์ดํŠธ์— ๋Œ€ํ•œ ์ œํ•œ ์‚ฌํ•ญ์ด ์žˆ๋‹ค.

์ด ์ฟ ํ‚ค๋ฅผ ํด๋ผ์ด์–ธํŠธ ๋ธŒ๋ผ์šฐ์ €์— ๋ฌธ์žํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๊ฒŒ ๋˜๊ณ  ์•ž์œผ๋กœ์˜ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์—” ์ฟ ํ‚ค๊ฐ€ ํ—ค๋”์— ๋‹ด๊ฒจ ์ „์†ก๋œ๋‹ค. ์ด ์ฟ ํ‚ค๋กœ ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ฒŒ ๋œ๋‹ค.

์ฃผ๋กœ ๊ณต๊ฐœ๋˜์–ด๋„ ๊ดœ์ฐฎ์€ ์ •๋ณด๋งŒ ๋‹ด๋Š”๋‹ค. ๋ณด์•ˆ์ด ์ค‘์š”ํ•œ ์ •๋ณด๋Š” ํด๋ผ์ด์–ธํŠธ ์ฟ ํ‚ค์— ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ์„œ๋ฒ„์˜ ์„ธ์…˜์„ ํ™œ์šฉํ•œ๋‹ค. ์˜ค๋กœ์ง€ ์„ธ์…˜ID ๋“ฑ ์‹๋ณ„ ์ •๋ณด๋งŒ ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅํ•˜๊ณ  ํ•„์š”ํ•œ ์ •๋ณด๋Š” ์„œ๋ฒ„์— ์š”์ฒญํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋„๋ก ํ•œ๋‹ค.

์œ ํšจ๊ธฐ๊ฐ„์— ๋”ฐ๋ฅธ ์ฟ ํ‚ค ์ข…๋ฅ˜

  • ์„ธ์…˜์ฟ ํ‚ค: ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‹๋ณ„ํ•˜๋Š” ์šฉ๋„, ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” ๋™์•ˆ๋งŒ ์œ ํšจํ•˜๋‹ค.
    ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•˜๋ฉด ์ฟ ํ‚ค๋„ ์‚ญ์ œ๋œ๋‹ค.
  • permanent์ฟ ํ‚ค: ์ฟ ํ‚ค์˜ ์œ ํšจ์‹œ๊ฐ„์ด ์žˆ์–ด ํ•ด๋‹น๊ธฐ๊ฐ„๋™์•ˆ ์œ ์ง€๋œ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•ด๋„ ์œ ํšจ๊ธฐ๊ฐ„๋™์•ˆ ์œ ์ง€๋œ๋‹ค. (์˜ˆ์‹œ - ์žฅ๋ฐ”๊ตฌ๋‹ˆ, ๋กœ๊ทธ์ธ ์ƒํƒœ ๊ธฐ์–ต, ์‚ฌ์ดํŠธ ๋‚ด ๋งž์ถคํ˜• ๊ด‘๊ณ  a.k.a.)

๊นƒ ์˜ค์˜ค์Šค๋กœ ๋กœ๊ทธ์ธํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ๊ฐ๋‚˜๋Š”๋ฐ,
์ž˜ ๋ชจ๋ฅผ๋• ํ•œ๋ฒˆ ๋กœ๊ทธ์ธํ•ด์„œ ์•„์ด๋””๋‚˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ ๋“ฑ์„ ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•˜๊ณ  ์ผ๋Š”๋ฐ
๋งˆ์ง€๋ง‰ ์ด์ŠˆํŠธ๋ž˜์ปค ํ”„๋กœ์ ํŠธ๋•Œ์—” JWTํ† ํฐ๋งŒ ๋กœ์ปฌ์— ์ €์žฅํ•˜๊ณ  ํ•„์š”์‹œ ์„œ๋ฒ„์— ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜์—ฌ ์‚ฌ์šฉํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ํ† ํฐ์˜ ์œ ํšจ๊ธฐ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๋กœ๊ทธ์•„์›ƒ ์ฒ˜๋ฆฌ๋˜๋„๋ก ๊ตฌํ˜„ํ–ˆ์—ˆ๋Š”๋ฐ ์ฟ ํ‚ค์˜ ๋ฐฉ์‹๊ณผ ๋™์ผํ•œ ๊ฒƒ ๊ฐ™๋‹ค.


์„ธ์…˜

์„œ๋ฒ„๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์ฟ ํ‚ค๊ฐ’์„ ๋จผ์ € ํ™•์ธํ•˜๋Š”๋ฐ, ์ฟ ํ‚ค๊ฐ’์ด ์—†๋‹ค๋ฉด ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•ด ์ƒˆ๋กœ์šด ์„ธ์…˜์„ ๋งŒ๋“ค๊ณ , ์„œ๋ฒ„์— ์ €์žฅํ•œ๋‹ค. ์ด ์„ธ์…˜์„ ์‘๋‹ตํ—ค๋”์— ๋‹ด์•„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฟ ํ‚ค๋ฅผ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค. ์‘๋‹ตํ—ค๋”์—๋Š” ์„ธ์…˜์ž์ฒด๋ณด๋‹ค ์„ธ์…˜ID์™€ ๊ฐ™์€ ์‹๋ณ„์ •๋ณด๋งŒ ๋ณด๋‚ธ๋‹ค.

๋‚ด์žฅ๊ฐ์ฒด(key: value)ํ˜•ํƒœ์ด๊ณ  ์„ธ์…˜ ID๋„ ์ƒ์„ฑ๋œ๋‹ค. ์ƒ์„ฑ๋œ ์„ธ์…˜์€ setAttribute(), getAttribute()๋ฅผ ์ด์šฉํ•ด ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ์„ธ์…˜ ๊ฐ์ฒด๋Š” ํด๋ผ์ด์–ธํŠธ์— ๋ณด๊ด€ํ•˜๊ธฐ์— ๋ณด์•ˆ์œ„ํ—˜์ด ์žˆ๋Š” ์ค‘์š”ํ•œ ์ •๋ณด๋“ค์„ ์ €์žฅํ•˜๊ธฐ์— ์šฉ์ดํ•˜๋‹ค. ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ์„œ๋ฒ„์—์„œ session.invalidate()์‹œ ์„ธ์…˜ ๊ฐ์ฒด๊ฐ€ ์ œ๊ฑฐ๋œ๋‹ค.


์บ์‹œ

๋ธŒ๋ผ์šฐ์ € ์„ฑ๋Šฅ์— ๊ด€์—ฌํ•œ๋‹ค.
์—ฌ๋Ÿฌ๋ฒˆ ์š”์ฒญ๋  ๋ฒ•ํ•œ ๋‚ด์šฉ๋“ค์€ ์„œ๋ฒ„-ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ์ž„์‹œ์ €์žฅ์†Œ, ์บ์‹œ์— ๋ณด๊ด€ํ•ด๋‘”๋‹ค.
๋ฐ˜๋ณต๋œ ์š”์ฒญ์„ ํ•˜์ง€ ์•Š์•„ ์†๋„๋ฅผ ๋†’์ด๊ณ  ๋น„์šฉ์„ ์ค„์ด๊ฒŒ ๋œ๋‹ค.


localStorage & sessionStorage

๋‘˜์˜ ์ฐจ์ด์ ์€ ์˜๊ตฌ์„ฑ์ด๋‹ค.
๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€๋Š” ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•ด๋„ ์ €์žฅ ๋‚ด์šฉ์ด ๋‚จ์•„์žˆ์–ด ์ง€์†์ ์œผ๋กœ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ ,์„ธ์…˜์Šคํ† ๋ฆฌ์ง€๋Š” ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ ์‹œ ์ €์žฅ ๋‚ด์šฉ์ด ์‚ญ์ œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ž ์‹œ๋งŒ ์‚ฌ์šฉํ•  ๋‚ด์šฉ์„ ์ €์žฅํ•œ๋‹ค.

profile
์•„ํ‹ฐํด๋ฆฌ์ŠคํŠธ - bit.ly/3wjIlZJ

0๊ฐœ์˜ ๋Œ“๊ธ€