Cookie & Session
๐ ์ฟ ํค์ ์ธ์ ์ ์ฌ์ฉํ๋ ์ด์ โ
HTTP ํ๋กํ ์ฝ์ ์ผ๋ฐ์ ์ผ๋ก Connectionless, Statelessํ ํ๊ฒฝ์ ๋๋ค.
์ด๋ก์จ server๋ User๊ฐ ๋๊ตฌ์ธ์ง ๋งค๋ฒ ํ์ธํด์ผ ํ๋ ์ํฉ์ด ์๊น๋๋ค.
์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด Session๊ณผ Cookie๋ฅผ ์ด์ฉํฉ๋๋ค.
Connectionless (๋น์ฐ๊ฒฐ์ฑ)โ
User์ Server๊ฐ ํต์ ์ ํ ๋ request์ response๋ฅผ ์ฃผ๊ณ ๋ฐ์ ํ ๋ฐ๋ก ์ฐ๊ฒฐ์ด ๋๊ธฐ๋ ํน์งโ
- ์ฐ๊ฒฐ์ ์ ์งํ๊ธฐ ์ํด
resource๋ฅผ ์ค์ฌ ๋ ๋ง์ด ์ฐ๊ฒฐํ ์ ์์ผ๋ ๋งค๋ฒ ์ฐ๊ฒฐ ๊ณผ์ ์ ๋ฐ๋ณตํด์ผํ๋ฏ๋กOverheading์ด ๋ฐ์ํ ์ ์์ต๋๋ค. - ์ด์ ๋ํ ํด๊ฒฐ์ฑ
์ผ๋ก KeepAlive ์์ฑ์ HTTP1.1๋ถํฐ Default๋ก ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ด๋ ์ง์ ๋ ์๊ฐ๋์
Packet๊ตํ์ด ์์ ๊ฒฝ์ฐ, ์ ์์ ๋๊ธฐ ์ ์ด๋ ์ ๋Packet์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ณด๋ด๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. - ์ด๋ฅผ ํตํด
Client์ํ ์ฒดํฌ๋ฅผ ํ๋ ์๋ฒ์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆด ๊ฒฝ์ฐ ์ญ์ ํ๊ณ๊ฐ ์กด์ฌํฉ๋๋ค.
Stateless (๋ฌด์ํ)โ
Server๋ User๋ฅผ ์๋ณํ ์ ์์ต๋๋ค. ์ฆ, Client๊ฐ ๋๊ตฐ์ง ๋ชจ๋ฆ
๋๋ค.โ
๐ช Cookieโ
Client Browser ๋ด์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ ํ์ผโ
- key, value, expired, ,domain, path๋ก ์ ๋ณด๊ฐ ์ด๋ฃจ์ด์ ธ ์๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ ์ข ๋ฃ๋์ด๋ ์ฟ ํค ๋ง๋ฃ์๊ฐ์ด ์ง๋์ง ์์๋ค๋ฉด, ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณ ์์ด ์ธ์ฆ์ด ์ ์ง๋๋ค.
- ํ๋์ Cookie๋ 4KB๊น์ง ์ ์ฅ์ด ๊ฐ๋ฅํ๋ค.
Client์ 300๊ฐ๊น์ง ์ ์ฅํ ์ ์์ผ๋ฉฐ, ํ๋์Domain๋น 20๊ฐ์ ๊ฐ๋ง ๊ฐ์ง ์ ์๋ค.- ์ฟ ํค๋ ์ฌ์ฉ์๊ฐ ๋ฐ๋ก ์์ฒญํ์ง ์์๋ Browser๊ฐ Request์ Request Header์ ๋ฃ์ด์ ์๋์ผ๋ก ์๋ฒ์ ์ ์กํ๋ค.
๊ตฌ์ฑ์์โ
- key(name) : Cookie์ ๊ณ ์ ํ ์ด๋ฆ
- value : ์ฟ ํค์ ๊ด๋ จ๋ ๊ฐ
- expired : ์ฟ ํค์ ์ ์ง ์๊ฐ
- domain : ์ฟ ํค๋ฅผ ์ ์กํ ๋๋ฉ์ธ
- path : ์ฟ ํค๋ฅผ ์ ์กํ ์์ฒญ ๊ฒฝ๋ก
๋์ ๋ฐฉ์โ
Client๊ฐServer์ Page๋ฅผ ์์ฒญServer์์ Cookie๋ฅผ ์์ฑFrontend Server/Backend Server ์๊ด์์ด Cookie ์์ฑ์ด ๋ชจ๋ ๊ฐ๋ฅํ๋ค.
HTTP Header์ Cookie๋ฅผ ํฌํจํ์ฌ Response- Cookie ๋ง๋ฃ ๊ธฐ๊ฐ์ด ์ง๋ ๋๊น์ง
Client์ Browser์ ๋ณด๊ด Client๊ฐ ๊ฐ์ Request๋ฅผ ํ ๊ฒฝ์ฐHTTP Header์ ์๋์ผ๋ก Cookie๋ฅผ ํจ๊ป ๋ณด๋
๐ฉ Sessionโ
Cookie ๊ธฐ๋ฐ Server ์ธก์์ ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ ํ์ผโ
Server์ธก์์๋Client๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด ๊ฐ๊ฐ ๊ณ ์ ์Session ID๋ฅผ ๋ถ์ฌํ๋ค.Client๊ฐ Request๋ฅผ ๋ณด๋ด๋ฉด,Server์์Session ID๋ฅผ ๋ถ์ฌ- Browser๊ฐ ์ข
๋ฃ๋๊ฑฐ๋
Server์์ Session์ ์ญ์ ํ๋ฉด ์ธ์ฆ์ด ๋ง๋ฃ๋๋ค. Server์์ ๊ด๋ฆฌํ๋ฏ๋ก ์ฟ ํค๋ณด๋ค ๋ณด์์ด ์ข์ผ๋, ์ฌ์ฉ์๊ฐ ๋ง์์ง์๋กServerMemory์ ๋ถํ๊ฐ ๊ฑธ๋ฆฐ๋ค.
๋์ ๋ฐฉ์โ
Client๊ฐServer์ ์ ์ ์Session ID๋ฐ๊ธClient๋Session ID๋ฅผ Cookie๋ฅผ ์ด์ฉํด ๊ฐ์ง๊ณ ์์Server์ ์์ฒญํ ๋Session ID๋ฅผ ๊ฐ์ด ์๋ฒ์HTTP Header์ requestServer๋Session ID๋ฅผ ์ ๋ฌ๋ฐ์Session์ ์๋Client์ ๋ณด๋ฅผ ์ฌ์ฉServer์์ฒญ์ ์ฒ๋ฆฌ ํClient์ ์๋ต
์ฃผ์
- ์ฟ ํค์ ์ธ์ ๋์ ๊ณผ์ ์ ๋น๊ตํ ๊ฒ์ ๋๋ค.
- ์ธ์ ์ญ์ ์ฟ ํค๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์ข ๋ฅ๋ฅผ ๊ตฌ๋ถํ๊ธฐ๋ณด๋จ ์ ๋ณด๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ์์ ์ฐจ์ด๋ผ๊ณ ๋ณด๋ ๊ฒ ํธํฉ๋๋ค.