Connectionless, Stateless ํน์ฑ์ ๊ฐ๋ HTTP์์ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํด ์ฟ ํค(Cookie)
๊ฐ ํ์ํ๋ค.
์ฟ ํค๋ Key์ Value๋ก ์ด๋ค์ง ์ผ์ข ์ ๋จ์๋ก, ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์ฟ ํค๋ฅผ ๋ฐ๊ธํ๋ฉด, ํด๋ผ์ด์ธํธ๋ ์๋ฒ ์์ฒญ์ ๋ณด๋ผ ๋๋ง๋ค ์ฟ ํค๋ฅผ ๊ฐ์ด ์ ์กํ๋ค. ์๋ฒ๋ ์ฟ ํค๋ฅผ ํ์ธํจ์ผ๋ก์จ ํด๋ผ์ด์ธํธ๋ฅผ ๊ตฌ๋ถํ ์ ์๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฟ ํค๋ ํด๋ผ์ด์ธํธ์ ์ ๋ณด ๊ธฐ๋ก๊ณผ ์ํ ์ ๋ณด๋ฅผ ํํํ๋ ์ฉ๋๋ก ์ฌ์ฉํ๋ค.
์น ์๋น์ค ์ฌ์ฉ ์ ํ์
์ฐฝ์ ๋จ๋ "๋ค์ ๋ณด์ง ์๊ธฐ", "7์ผ ๊ฐ ํ์ํ์ง ์๊ธฐ" ๋ฒํผ์ด ์กด์ฌํ๋ค. ์น ์๋ฒ๋ ํด๋น ํด๋ผ์ด์ธํธ์ ํ์
์ต์
์ ๊ธฐ๋กํ๊ธฐ ์ํด ์ฟ ํค์ ํด๋น ์ ๋ณด๋ฅผ ๊ธฐ๋กํ๊ณ , ์ฟ ํค๋ฅผ ํตํด ํ์
์ฐฝ ํ์ ์ฌ๋ถ๋ฅผ ํ๋จํ๋ค.
์ฟ ํค๋ ์๋ฒ์ ํต์ ํ ๋๋ง๋ค ์ ์ก๋๊ธฐ ๋๋ฌธ์ ์ฟ ํค๊ฐ ํ์ ์๋ ์์ฒญ์ ๋ณด๋ผ ๋ ๋ฆฌ์์ค ๋ญ๋น๊ฐ ๋ฐ์ํ ์ ์๋ค.
๋๋ฌธ์ ์ต๊ทผ์๋ Modern Storage APIs๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์ ๊ถ์ฅํ๋ค.
์น ์๋ฒ์์๋ ์๋ง์ ํด๋ผ์ด์ธํธ์ ๋ก๊ทธ์ธ ์ํ์ ์ด์ฉ์๋ฅผ ๊ตฌ๋ณํด์ผ ํ๋ค. ์ด๋ ํด๋ผ์ด์ธํธ๋ฅผ ์๋ณํ ์ ์๋ ๊ฐ์ ์ฟ ํค์ ์ ์ฅํด์ ์ฌ์ฉํ๋ค.
์ฟ ํค๋ ํด๋ผ์ด์ธํธ์ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋๊ณ ์์ฒญ์ ํฌํจ๋๋ ์ ๋ณด์ด๋ค.
๋ฐ๋ผ์ ์
์์ ์ธ ํด๋ผ์ด์ธํธ๋ ์ฟ ํค ์ ๋ณด๋ฅผ ๋ณ์กฐํด์ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด์ ์ ๋ณด๋ฅผ ํ์ทจํ ์ ์๋ค.
์ฟ ํค์ ์ธ์ฆ ์ํ๋ฅผ ์ ์ฅํ์ง๋ง ํด๋ผ์ด์ธํธ๊ฐ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ณ์กฐํ ์ ์๊ฒ ํ๊ธฐ ์ํด ์ธ์
(Session)
์ ์ฌ์ฉํ๋ค.
์ธ์
์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์๋ฒ์ ์ ์ฅํ๊ณ ํด๋น ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ ํค(์ ์ถํ ์ ์๋ ๋๋คํ ๋ฌธ์์ด) ๋ฅผ ๋ง๋ค์ด ํด๋ผ์ด์ธํธ์ ์ ๊ทผํ๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค. ํด๋น ํค๋ฅผ Session ID
๋ผ๊ณ ํ๋ค.
๋ธ๋ผ์ฐ์ ๋ Session ID๋ฅผ ์ฟ ํค์ ์ ์ฅํ๊ณ HTTP ์์ฒญ์ ๋ณด๋ผ ๋ ์ฌ์ฉํ๋ค. ์๋ฒ๋ ์์ฒญ์ ํฌํจ๋ ํค์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ธ์ฆ ์ํ๋ฅผ ํ์ธํ๋ค.
์ฟ ํค๋ ๋ฐ์ดํฐ ์์ฒด๋ฅผ ์ด์ฉ์๊ฐ ์ ์ฅํ๋ฉฐ, ์ธ์ ์ ์๋ฒ๊ฐ ์ ์ฅํ๋ค๋ ์ฐจ์ด์ ์ด ์กด์ฌํ๋ค.
์ฟ ํค๋ ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ๋ ์ ์ฅ๋ ์ฟ ํค๋ฅผ ์กฐํ, ์์ , ์ถ๊ฐํ ์ ์๋ค.
์ฟ ํค๋ฅผ ์ค์ ํ ๋์๋ ๋ง๋ฃ ์๊ฐ์ ์ง์ ํ ์ ์๊ณ , ๋ง๋ฃ ์๊ฐ ์ดํ์๋ ํด๋ผ์ด์ธํธ์์ ์ฟ ํค๊ฐ ์ญ์ ๋๋ค. ์ฟ ํค์ ๋ง๋ฃ๋ ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )์์ ๊ด๋ฆฌ๋๋ค.
์ฟ ํค๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๋ ๋ค ์ค์ ํ ์ ์๋ค.
HTTP ์๋ต ์ค ํค๋์ ์ฟ ํค ์ค์ ํค๋(Set-Cookie)
๋ฅผ ์ถ๊ฐํ๋ฉด ํด๋ผ์ด์ธํธ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฟ ํค๋ฅผ ์ค์ ํ๋ค.
HTTP/1.1 200 OK
Server: Apache/2.4.29 (Ubuntu)
Set-Cookie: name=test;
Set-Cookie: age=30; Expires=Fri, 30 Sep 2022 14:54:50 GMT;
...
์๋ฐ์คํฌ๋ฆฝํธ
๋ฅผ ์ด์ฉํด ์ฟ ํค๋ฅผ ์ค์ ํ๋ค.
document.cookie = "name=test;"
document.cookie = "age=30; Expires=Fri, 30 Sep 2022 14:54:50 GMT;"
Console
ํญ์ ๋๋ฅธ ๋ค์document.cookie
๋ฅผ ์
๋ ฅํ๋ฉด ์ฟ ํค ์ ๋ณด๋ฅผ ํ์ธํ ์ ์๋ค.Application
ํญ์ ๋๋ฅธ๋ค. ์ข์ธก์ ๋์ด๋ ๋ชฉ๋ก์์ Cookies
๋ฅผ ํผ์น๋ฉด Origin ๋ชฉ๋ก์ ํ์ธํ ์ ์๋ค.