Web

Cookie vs localStorage vs sessionStorage

createElement 2022. 10. 31. 18:35

 

 

๐Ÿช Cookie

์ฟ ํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ๋˜๋Š” ์ž‘์€ ํฌ๊ธฐ์˜ ๋ฌธ์ž์—ด๋กœ, RFC 6265 ๋ช…์„ธ์—์„œ ์ •์˜ํ•œ HTTP ํ”„๋กœํ† ์ฝœ์˜ ์ผ๋ถ€์ด๋‹ค.

 

ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

- ํ‚ค-๊ฐ’์˜ ์ €์žฅ

- ํด๋ผ์ด์–ธํŠธ ์‹๋ณ„๊ณผ ๊ฐ™์€ ์ธ์ฆ์— ๋งŽ์ด ์“ฐ์ธ๋‹ค.

- 4KB ์šฉ๋Ÿ‰ ์ œํ•œ์„ ๊ฐ–๋Š”๋‹ค.

- ์›น ์„œ๋ฒ„์— ์˜ํ•ด ์ƒ์„ฑ๋˜๋ฉฐ ์„œ๋ฒ„๊ฐ€ HTTP ์‘๋‹ต ํ—ค๋”์˜ Set-Cookie์— ๋‚ด์šฉ์„ ๋„ฃ์–ด ์ „๋‹ฌํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด ๋‚ด์šฉ์„ ์ž์ฒด์ ์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ๋œ๋‹ค.

- ๋งค ์„œ๋ฒ„ ์š”์ฒญ๋งˆ๋‹ค ์ฟ ํ‚ค๋„ ํ•จ๊ป˜ ์ „์†ก๋œ๋‹ค. ๋งŒ์•ฝ ์ฟ ํ‚ค ์‚ฌ์ด์ฆˆ๊ฐ€ ์ปค์ง€๋ฉด HTTP ์š”์ฒญ ํฌ๊ธฐ๋„ ์ปค์ง„๋‹ค.

- ์ฟ ํ‚ค ์กฐ์ž‘ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด httpOnly๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

- ๋ณดํ†ต ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ๋Š” ์ˆœ๊ฐ„ ์—†์–ด์ง€๋ฉฐ ์œ ํšจ ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

๐Ÿค” ์™œ ์„œ๋ฒ„์— ์ฟ ํ‚ค๊ฐ€ ๊ฐ™์ด ์ „์†ก๋ ๊นŒ?

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

 

์ฟ ํ‚ค๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ์ง€์†์ ์ธ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๋กœ ๊ณ„์† ์ „์†ก๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

Cookie ์“ฐ๊ธฐ

- key=value ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ ๊ฐ ์Œ์€ ';'๋Ÿฌ ๊ตฌ๋ถ„ํ•œ๋‹ค.

- document.cookie์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด ๊ฐ’์„ ํ•ด๋‹น ์ฟ ํ‚ค ๊ฐ’๋งŒ ๊ฐฑ์‹ ํ•œ๋‹ค.

document.cookie = 'key=value';

 

Cookie ์ฝ๊ธฐ

document.cookie;

 

Cookie ์œ ํšจ ๊ธฐ๊ฐ„ ์„ค์ •

- Cookie๋Š” ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ๋Š” ์ˆœ๊ฐ„ ์—†์–ด์ง€๋ฏ€๋กœ ์œ ํšจ ๊ธฐ๊ฐ„์„ ์ •์˜ํ•ด ํŠน์ • ๊ธฐ๊ฐ„๊นŒ์ง€ ์œ ํšจํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

- ์œ ํšจ ๊ธฐ๊ฐ„์€ GMT String๋กœ ์ž‘์„ฑํ•œ๋‹ค.

- GMT String ๊ฐ’์€ toGMTString()์œผ๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

- ์œ ํšจ ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•ด '์ผ์ฃผ์ผ ๊ฐ„ ํ•ด๋‹น ํŒ์—… ๋ณด์ง€ ์•Š๊ธฐ' ๋“ฑ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ผ์ฃผ์ผ ๊ฐ„ ์œ ์š”ํ•œ ์ฟ ํ‚ค๋ฅผ ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅํ•ด ํ•ด๋‹น ์ฟ ํ‚ค๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด ํŒ์—…์„ ๋ณด์ด์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

document.cookie = 'user=tom; expires=Wed, 18 Aug 2021 02:13:37 GMT';

- max-age๋ฅผ ์ด์šฉํ•˜๋ฉด ์ƒ์„ฑ ์‹œ์ ์„ ๊ธฐ์ค€์œผ๋กœ ์œ ํšจ ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

document.cookie = 'user=tom; max-age=100';

 

 

 

 

๐Ÿ’พ Local Storage

- ์ฟ ํ‚ค์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•œ๋‹ค.

- key, value ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

- ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜์œผ๋กœ Storage๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. ๋งŒ์•ฝ ๋„๋ฉ”์ธ๋งŒ ๊ฐ™๋‹ค๋ฉด ์—ฌ๋Ÿฌ ํƒญ ๋‚ด์—์„œ ๊ฐ™์€ Storage๊ฐ€ ๊ณต์œ ๋œ๋‹ค.

- ๋ฐ์ดํ„ฐ์˜ ๋งŒ๋ฃŒ ์‹œ๊ฐ„์ด ์—†๋‹ค.

 

localStorage ์“ฐ๊ธฐ

localStorage.setItem('name', 'tom');

 

localStorage ์ฝ๊ธฐ

์ฝ๊ณ  ์‹ถ์€ ๋ฐ์ดํ„ฐ์˜ ํ‚ค ๊ฐ’์„ ์ž‘์„ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

localStorage.getItem('name');

 

localStorage ์‚ญ์ œํ•˜๊ธฐ

localStorage.removeItem('name'); // ํŠน์ • ๋ฐ์ดํ„ฐ๋งŒ ์‚ญ์ œํ•  ๋•Œ
localStorage.clear(); // ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ

 

 

 

๐Ÿ’พ Session Storage

- ์ „์ฒด์ ์ธ ํŠน์ง•์€ Local Storage์™€ ๋น„์Šทํ•˜๋‹ค.

- ์ฟ ํ‚ค์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•œ๋‹ค.

- key, value ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

- ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์นจํ•ด๋„ ๋ฐ์ดํ„ฐ๋Š” ๋‚จ์•„ ์žˆ์ง€๋งŒ, Local Storage์™€ ๋‹ค๋ฅด๊ฒŒ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ์œผ๋ฉด ์ €์žฅ๋œ ๋‚ด์šฉ์ด ์‚ญ์ œ๋œ๋‹ค.

 

 

 

 

๐Ÿช„ Local Storage vs. Session Storage

๋ชจ๋‘ HTML5์— ์ถ”๊ฐ€๋œ ์ €์žฅ์†Œ(์›น ์Šคํ† ๋ฆฌ์ง€)์ด๋‹ค. 

 

๊ณตํ†ต์ 

- ๋ชจ๋‘ key-value ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค.

- ๋‘ ์ €์žฅ์†Œ๋Š” ๋ชจ๋‘ window ๊ฐ์ฒด ์•ˆ์— ์กด์žฌํ•œ๋‹ค.

- ๋‘ ์ €์žฅ์†Œ ๋ชจ๋‘ Storage ๊ฐ์ฒด๋ฅผ ์ƒ์†๋ฐ›์•„ ๋ฉ”์„œ๋“œ๊ฐ€ ๊ณตํ†ต์ ์œผ๋กœ ์กด์žฌํ•œ๋‹ค.

- ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก์— ์ €์žฅ๋˜๋ฉฐ ์„œ๋ฒ„๋กœ ์ „์†ก์ด ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.

- ์ฟ ํ‚ค์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•œ๋‹ค. ์„œ๋ฒ„์— ์ „์†กํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ์ฟ ํ‚ค๊ฐ€ ์•„๋‹Œ Local Storage๋‚˜ Session Storage์— ์ €์žฅํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ๋‚ญ๋น„๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.

- ์ฟ ํ‚ค์™€ ๋‹ค๋ฅด๊ฒŒ HTTP ํ—ค๋”๋ฅผ ํ†ตํ•ด ์›น ์Šคํ† ๋ฆฌ์ง€ ๊ฐ์ฒด๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์—†๋‹ค.

 

์ฐจ์ด์ 

๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ ๋ฐ์ดํ„ฐ์˜ ์ง€์†์„ฑ(์˜๊ตฌ์„ฑ)์ด๋‹ค.

 

Local Storage๋Š” ์˜๊ตฌ ์ €์žฅ์†Œ๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์šฐ์ง€ ์•Š๋Š” ํ•œ ๊ณ„์† ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ๋˜์–ด ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ž„์‹œ ์ €์žฅ์†Œ๋ผ ๋ถ€๋ฅด๋Š” Session Storage์˜ ๋ฐ์ดํ„ฐ๋Š” ์œˆ๋„์šฐ๋‚˜ ๋ธŒ๋ผ์šฐ์ € ํƒญ์„ ๋‹ซ์„ ๊ฒฝ์šฐ ์‚ญ์ œ๋œ๋‹ค.

 

 

๐Ÿช ์ฟ ํ‚ค๋„ ๋ธŒ๋ผ์šฐ์ €์˜ ์ €์žฅ์†Œ์˜ ์—ญํ• ์„ ํ•˜์ง€๋งŒ Local Storage, Session Storage์™€ ๋‹ค๋ฅด๊ฒŒ ๋งŒ๋ฃŒ ๊ธฐํ•œ์ด ์žˆ๋Š” key-value ์ €์žฅ์†Œ์ด๋‹ค. 

 

 

 

๐Ÿ™Œ ์ด์ •๋ฆฌ

- Cookie : ํŒ์—… ์ฐฝ(๊ด‘๊ณ  ์ผ์ฃผ์ผ ๊ฐ„ ๋„์šฐ์ง€ ์•Š๊ธฐ)

- Local Storage : ์ž๋™ ๋กœ๊ทธ์ธ

- Session Storage : ์ž…๋ ฅ ํผ ์ •๋ณด, ๋น„๋กœ๊ทธ์ธ ์žฅ๋ฐ”๊ตฌ๋‹ˆ, ์ผํšŒ์„ฑ ๋กœ๊ทธ์ธ ์ •๋ณด

 

 

 

 

์ฐธ๊ณ  ์ž๋ฃŒ

https://ko.javascript.info/cookie

https://www.zerocho.com/category/HTML&DOM/post/5918515b1ed39f00182d3048