์ฟ ํค๋ ์๋ฒ๊ฐ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ธ๋ผ์ฐ์ ์ธก์ ์ ์ฅํ ํ, ๋ค์ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ๊ธฐ์ ํน์ ๋ฐ์ดํฐ๋ผ๊ณ ์ ์ํฉ๋๋ค.
์ด๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด์๋ Httpํ๋กํ ์ฝ ์ Http ํค๋๋ฅผ ํตํด ์ก์์ ํ๋๋ก ์ ์๋์ด ์์ต๋๋ค.
์ฌ์ง๊ณผ ๊ฐ์ด dev-tool์์ ์ฝ๊ฒ ํ์ธํ ์ ์์ต๋๋ค.
์ฟ ํค๋ ๋จ์ํ name๊ณผ value๋ก ์ด๋ฃจ์ด์ง ๋จ์ํ ๋ฌธ์์ด์ ๋๋ค.
๋ธ๋ผ์ฐ์ ๋ ์๋ฒ์ request ๋ณด๋ด๊ณ , ์๋ฒ๋ response๋ฅผ ๋ ๋ ค์ค๋๋ค.
์ด response์๋ ์ฌ์ฉ์๊ฐ ์์ฒญํ request์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ค ๋ฟ๋ง ์๋๋ผ ๋ธ๋ผ์ฐ์ ์์ ์ ์ฅํ๊ณ ์ ํ๋ ์ฟ ํค๊ฐ ๋ค์ด์ฌ ์ ์์ต๋๋ค.
์๋ฒ Set-Cookie
์๋ฒ์์ ์ฟ ํค๋ฅผ ๋ง๋ค์ด ๋ณด๋ผ ๋ ์๋์ ๊ฐ์ด ์ค์ ํด ์ฃผ๋ฉด ๋ฉ๋๋ค.
Set-Cookie: Name=Value
Set-Cookie: Name=Value
์๋ฒ๋ Set-Cookie๋ผ๋ ์๋ต ํค๋์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐ์์ผ ํ๋ ์ฟ ํค์ ๋ณด๋ฅผ ๋ช ์ํด ์ค๋๋ค.
ํ๋์ Set-Cookie์๋ ํ๋์ ์ฟ ํค๋ง ๋ด์ ์ ์๊ณ , ์ฌ๋ฌ ๊ฐ์ ์ฟ ํค๋ฅผ ๋ณด๋ผ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ๋ฐ์ ์ฟ ํค๋ ์ปดํจํฐ์ ํ๋์ ์ ์ฅํ๊ฒ ๋ฉ๋๋ค.
๋์ผํ ์๋ฒ์ ์์ฒญํ ๋, ์ ์ฅํด ๋์ ์ฟ ํค๋ฅผ Requestํค๋์ ์ค์ด์ ๋ณด๋ด๊ฒ ๋ฉ๋๋ค.
ํด๋ผ์ด์ธํธ Cookie
๋ธ๋ผ์ฐ์ ์์๋ ์๋์ ๊ฐ์ด ์ ์ํ์ฌ ์ฟ ํค๋ฅผ ๋ด์์ ๋ณด๋ด๊ฒ ๋ฉ๋๋ค.
Cookie: Name=Value; Name=Value; ...
์ด๋ฐ ํํ๋ก ์ญ ๋ถ์ฌ์ ๋ณด๋ด๊ฒ ๋ฉ๋๋ค.
์์ฝ
์๋ฅผ ๋ค์ด, ์ ๋ธ๋ก๊ทธ์ ์ง์ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
https://wanga-story.tistory.com/ ํฐ์คํ ๋ฆฌ ์๋ฒ์์
Set-Cookie: host=wanga
Set-Cookie: title=Cookie
๋ผ๋ ์ฟ ํค๋ฅผ 2๊ฐ ๋ณด๋๋ค๊ณ ๊ฐ์ ํฉ์๋ค.
๊ทธ๋ฌ๋ฉด ์ฌ์ฉ์๋ ์ด์ ์ ๋ธ๋ฌ๊ทธ์ ๋จธ๋ฌด๋ ํ, ์ด๋ค ๊ฒ์๊ธ์ ๋ด๋ ๋งค๋ฒ ๊ฐ์ ์ฟ ํค๋ฅผ ํฐ์คํ ๋ฆฌ ์๋ฒ์ ๋ณด๋ด๊ฒ ๋ฉ๋๋ค.
Cookie: host=wanga; title=Cookie;
๊ทธ๋ ๊ฒ ๋๋ฉด ์๋ฒ๋ ์ด์ ์ฟ ํค๊ฐ์ ์ฝ์ด์ ์ํ๋ ๋ฐฉํฅ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅํด ๋จ๋ค๊ฐ ์๋ฒ์์๋ ๋ธ๋ผ์ฐ์ ๋ก๋ถํฐ ์์ฒญ์ด ๋ค์ด์ฌ ๋,
๋ฐ์ดํฐ์ ํจ๊ป ์์ฒญ์ ๋ฐ์ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ ๊ฒ์ ๋๋ค.
Set-Cookie๋ ์๋ฒ๊ฐ ๋ธ๋ผ์ฐ์ ๋ก ์ฟ ํค๋ฅผ ๋ณด๋ด๋ ๊ฒ์ผ๋ก ์ผํ์ฑ์ด์ง๋ง,
Cookieํค๋๋ฅผ ํตํด ์๋ฒ๋ก ์ฟ ํค๋ฅผ ๋ณด๋ด๋ ๊ฒ์ ์ผ์ ์๊ฐ ๋์ ๋ฐ๋ณต๋๋ ์์ ์ ๋๋ค.
์ ํจ๊ธฐ๊ฐ
์๋ฒ์์ ์ฒ์ ์ฟ ํค๋ฅผ ๋ง๋ค์ด์ ๋ณด๋ผ ๋, ์ ํจ๊ธฐ๊ฐ์ ์ค์ ํด์ ๋ณด๋ผ ์ ์์ต๋๋ค.
๋ฏธ์ค์ ์ผ๋ก ๋ํดํธ๋ ๋ธ๋ผ์ฐ์ ์ ์ธ์ ์ด ์ข ๋ฃ๋ ๋ ํจ๊ป ์ฌ๋ผ์ง๊ฒ ๋ฉ๋๋ค.
์ด๋ฅผ ์ธ์ ์ฟ ํค๋ผ๊ณ ํฉ๋๋ค.
์ ํจ๊ธฐ๊ฐ์ ์ค์ ํ ์ฟ ํค๋ฅผ ์์ ์ฟ ํค๋ผ๊ณ ํฉ๋๋ค.
์ด๋ ๋ธ๋ผ์ฐ์ ์ธ์ ๋ฑ๊ณผ ๋ฌด๊ดํ๊ฒ ํน์ ๊ธฐ๊ฐ์ด๋ ํน์ ์์ ๊น์ง ์ฟ ํค๊ฐ ์ ํจํฉ๋๋ค.
- expires: ๋ง๋ฃ์ผ์ด ๋๋ฉด ์ฟ ํค ์ญ์
- max-age: ์ด๋จ์๋ก ์ ํ๋ฉฐ, 0์ด๋ ์์๋ก ์ง์ ํ๊ฒ ๋๋ฉด ์ฟ ํค ์ญ์
Set-Cookie: Key=Value; Expires=์ข
๋ฃ์์
Set-Cookie: Key=Value; Max-Age=์ ํจ ๊ธฐ๊ฐ
dev-tool ๋ณด๋ฉด Set-Cookie ๋์ ์ด๋ ๊ฒ ๊ฐ์ด ์ค์ ๋ผ ์๋ ๊ฑธ ๋ณผ ์ ์์ต๋๋ค.
์ ์ฉ๋ฒ์
์ฟ ํค๋ ๋๋ฉ์ธ์ ๋ฐ๋ผ ์ ํ๋๊ธฐ ๋๋ฌธ์, ๋๋ฉ์ธ ์ง์ ์ผ๋ก ์์ฑ๋ ์ฟ ํค๋ ๊ณ์ํด์ ๋ณด๋ด๊ฒ ๋ฉ๋๋ค.
ํ์ง๋ง ์ด๋ฅผ ์ข ๋ ์ธ๋ฐํ๊ฒ ํ์ฌ ์ํ๋ URL์ ๋ฐฉ๋ฌธํ ๋์๋ง ์ฟ ํค๋ฅผ ๋ณด๋ผ ์ ์๊ฒ ์ ์ดํ ์ ์์ต๋๋ค.
- Domain์ ๋ช ์ํ๊ฒ ๋๋ฉด, ๋๋ฉ์ธ + ์๋ธ๋๋ฉ์ธ๊น์ง ์ฟ ํค์ ๋ฒ์๊ฐ ํ์ฅ
- Path๋ฅผ ๋ช ์ํ๋ฉด ํด๋น ๋๋ฉ์ธ์ ํน์ ๊ฒฝ๋ก๋ก ์ฟ ํค์ ๋ฒ์๋ฅผ ์ถ์
Set-Cookid: Key=Value; Domain=๋๋ฉ์ธ
Set-Cookid: Key=Value; Path=๊ฒฝ๋ก
์ฌ์ง์ ๋ณด์๋ฉด, ๋ง์ง๋ง์ ์ ํ์์ต๋๋ค.
path=/; ๋ก ์ค์ ๋ผ ์๋ ๊ฑฐ ๋ด์๋ ํด๋น ๋๋ฉ์ธ ์ ๋ถ ๋ณด๋ผ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
domain=google.com; ์ผ๋ก ์ค์ ๋ผ์๋๊ฑฐ ๋ด์๋ google.com์ ์๋ธ ๋๋ฉ์ธ ์ ๋ถ ์ฟ ํค๋ฅผ ๊ณต์ ํ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค.
Cookie ๋จ์
์ฟ ํค์ ๋จ์ ์ ๋ํด ๋ณด๊ฒ ์ต๋๋ค.
- ์ ์ค๋๊ธฐ ์ฌ์
- ๋ณ์กฐ๊ฐ ์ฌ์
- ๋ณด์, ํดํน์ ์ํ
- ํญ์ ์๋ฒ์ ์ฟ ํค๋ฅผ ์ ์กํ๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ ํธ๋ํฝ์ ์ ๋ฐ
์ด๋ฅผ ๋์ฒดํ๊ธฐ ์ํด Local Storage, Sesstion Storage๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ,
๊ตณ์ด ์๋ฒ์์ ์ฝ์ ํ์๊ฐ ์๋ ๋ฐ์ดํฐ๋ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅํ์ฌ์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
Cookie ๋ณด์ ๊ฐ์
๋จ์ ์ ๊ฐ๊ณ ์์์๋ ์ฟ ํค๋ฅผ ์ฌ์ฉํด์ผ ๋๋ค๋ฉด ์์ฑ ์ต์ ์ ์ฌ์ฉํ๋ฉด ๊ทธ๋๋ง ๊ด์ฐฎ์์ง ๊ฒ์ ๋๋ค.
Secure์ HttpOnly ์ต์ ์ ๋๋ค.
Set-Cookid: Key=Value; Secure
Set-Cookid: Key=Value; HttpOnly
Secure๋ ๋ธ๋ผ์ฐ์ ๊ฐ https ํ๋กํ ์ฝ ์์์๋ง ์๋ฒ๋ก ์ฟ ํค๋ฅผ ๋ณด๋ด๊ฒ ๋ฉ๋๋ค.
๋คํธ์ํฌ ์๊ฐ ํ์ทจ๋์์ ๋๋ฅผ ๋๋นํ๊ฒ ๋ฉ๋๋ค.
HttpOnly ์ด ์์ฑ์ด ๋ช ์๋ ์ฟ ํค๋ JS์์ document.cookie๋ก ์ฟ ํค์ ์ ๊ทผํ ์ ์์ต๋๋ค.
Cookie์ ๋ํ ๋ด์ฉ์ด ๋ง์ ์ฌ์ฉ๋๋ ์ด์ ๋ ๋ค์ ๊ฒ์๊ธ์์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
'Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
CSR vs SSR vs SSG (+SEO) (0) | 2023.08.06 |
---|---|
Token] JWT (JSON Web Token) (0) | 2023.07.27 |
Token] Token๋? ์ ์ (0) | 2023.07.23 |
Session์ด๋? (0) | 2023.07.20 |
Cookie] ์ฌ์ฉํ๋ ์ด์ (0) | 2023.07.16 |