์ข์! ๐ ์น ๊ฐ๋ฐ์์ ์์ฃผ ์ฐ์ด๋ Web Storage์ Cookie๋
๋ชจ๋ ๋ธ๋ผ์ฐ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ธฐ์ ์ด์ง๋ง,
์ฉ๋์ ๋์ ๋ฐฉ์์ด ์์ ํ ๋ฌ๋ผ!
| ํญ๋ชฉ | ๐ช ์ฟ ํค (Cookie) | ๐พ ์น ์คํ ๋ฆฌ์ง (Web Storage) |
|---|---|---|
| ๐ฆ ์ ์ฅ ์์น | ๋ธ๋ผ์ฐ์ (์์ ํฌ๊ธฐ) | ๋ธ๋ผ์ฐ์ (๋ ๋ง์ ์ฉ๋) |
| ๐ ์๋ฒ ์ ์ก | โ ๋งค HTTP ์์ฒญ๋ง๋ค ์๋ ์ ์ก | โ ์ ์ก ์ ๋จ (ํด๋ผ์ด์ธํธ ์ ์ฉ) |
| ๐ ์ ์ฅ ์ฉ๋ | ์ฝ 4KB ์ ํ | 5~10MB ์ด์ |
| ๐ ๋ง๋ฃ์๊ฐ ์ค์ | โ ๊ฐ๋ฅ (์ค์ ์ ํ๋ฉด ์ธ์ ์ฟ ํค) | localStorage: ๋ฌด๊ธฐํsessionStorage: ํญ ์ข
๋ฃ ์ ์ญ์ |
| ๐ ๋ณด์์ฑ | ์๋์ ์ผ๋ก ๋ฎ์ (์ ์ก๋จ) | ์๋์ ์ผ๋ก ๋์ (์ ์ก ์ ๋จ) |
| ๐ ์ฌ์ฉ ์ฉ๋ | ๋ก๊ทธ์ธ ์ํ ์ ์ง, ์ถ์ , ๊ด๊ณ , ์ธ์ ์ ์ง | ํ๋ก ํธ์์ ์ฌ์ฉ์ ์ค์ , ํผ ์๋์์ฑ ๋ฑ |
Set-Cookie๋ก ์ค์ ํจSet-Cookie: userId=1234; Expires=Wed, 17 Apr 2025 12:00:00 GMT; Path=/;
HttpOnly ์ต์
์ด ์์ ๋)document.cookie = "theme=dark";
console.log(document.cookie);
localStoragelocalStorage.setItem("nickname", "moongi");
localStorage.getItem("nickname"); // "moongi"
sessionStoragesessionStorage.setItem("step", "2");
sessionStorage.getItem("step"); // "2"
| ํญ๋ชฉ | Cookie | localStorage | sessionStorage |
|---|---|---|---|
| ๐ก ์๋ฒ ์๋ ์ ์ก | โ Yes | โ No | โ No |
| ๐ ์ ํจ ๊ธฐ๊ฐ | ์ค์ ๊ฐ๋ฅ | ์๊ตฌ ์ ์ฅ | ํญ ์ข ๋ฃ ์ ์ญ์ |
| ๐ฆ ์ ์ฅ ์ฉ๋ | ~4KB | ~5MB | ~5MB |
| ๐ ๋ณด์ | ๋ฏผ๊ฐ์ ๋ณด ์ ์ฅ ๋น์ถ์ฒ | ๋ณด์ ๊ด๋ฆฌ ํ์ | ๋ณด์ ๊ด๋ฆฌ ํ์ |
| โจ ์ฌ์ฉ ์์ | ๋ก๊ทธ์ธ ์ธ์ , ์ธ์ฆ ์ํ | ํ ํฐ, ํ ๋ง ์ค์ | ํผ ๋จ๊ณ ์ ์ฅ, ๊ฒ์ ํํฐ ์ ์ง |
| ์ํฉ | ์ถ์ฒ ์ ์ฅ์ |
|---|---|
| ๋ก๊ทธ์ธ ์ธ์ ๊ด๋ฆฌ (์๋ฒ ์ธ์ฆ ๊ธฐ๋ฐ) | โ Cookie (์๋ฒ ์ธ์ฆ์ฉ) |
| JWT ํ ํฐ ์ ์ฅ (ํ๋ก ํธ ์ธ์ฆ ๊ธฐ๋ฐ) | โ
localStorage (๋๋ HttpOnly ์ฟ ํค) |
| ํ ๋ง ์ค์ , ์ฌ์ฉ์ ์ ํธ๊ฐ | โ localStorage |
| ํ ํญ ๋ด์์๋ง ํ์ํ ๋ฐ์ดํฐ | โ sessionStorage |
ํ์ํ๋ค๋ฉด
React์์ localStorage๋ก ํ ํฐ ์ ์ฅํ๊ธฐ์ฟ ํค๋ก ๋ก๊ทธ์ธ ์ธ์
์ ์งํ๋ ๋ฒJWT + localStorage vs JWT + Cookie ๋ณด์ ๋น๊ต์ด๋ฐ ๊ฒ๋ ๋ค ์๋ ค์ค๊ฒ!
์ด๋ค ๋ฐฉํฅ์ผ๋ก ์ฐ๊ณ ์ถ์ ๊ฑฐ์ผ? ๋ก๊ทธ์ธ, ์ํ ์ ์ง, ํ๋ก ํธ ์ค์ ? ๐