Cookie
1. ์ฟ ํค(Cookie)๋?
ํญ๋ชฉ | ์ค๋ช
|
์ฟ ํค(Cookie) | ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )์ ์ ์ฅ๋๋ ์์ ๋ฐ์ดํฐ |
์ญํ | ์ฌ์ฉ์์ ์ํ ์ ๋ณด๋ฅผ ๋ธ๋ผ์ฐ์ ์ธก์ ์ ์ฅ |
์ ์ฅ ์์น | ๋ธ๋ผ์ฐ์ (ํด๋ผ์ด์ธํธ ์ธก) |
์์ | ๋ก๊ทธ์ธ ์ ์ง, ์ต๊ทผ ๋ณธ ์ํ, ๋ฐฉ๋ฌธ ํ์ ๋ฑ |
2. ์ธ์
vs ์ฟ ํค ๋น๊ต
ํญ๋ชฉ | ์ธ์
| ์ฟ ํค |
์ ์ฅ ์์น | ์๋ฒ | ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ ) |
๋ณด์์ฑ | ๋์ (์๋ฒ์๋ง ์ ์ฅ) | ๋ฎ์ (ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋จ) |
๋ฐ์ดํฐ ์ ์ง | ์๋ฒ๊ฐ ์ ์งํด์ผ ํจ | ๋ธ๋ผ์ฐ์ ์ ๋จ์ ์์ |
์ฉ๋ ์ ํ | ์ ํ ์์ (DB ๊ธฐ์ค) | ์ฝ 4KB |
3. Django์์ ์ฟ ํค ์ฌ์ฉ
์ฟ ํค ์ค์ (Response ๊ฐ์ฒด ์ฌ์ฉ)
def set_cookie_view(request):
response = HttpResponse("์ฟ ํค๊ฐ ์ค์ ๋์์ต๋๋ค.")
response.set_cookie('username', 'hong', max_age=60*60) # 1์๊ฐ ์ ์ง
return response
Python
๋ณต์ฌ
โข
key: ์ฟ ํค ์ด๋ฆ
โข
value: ์ ์ฅํ ๊ฐ (๋ฌธ์์ด)
โข
max_age: ์ ํจ์๊ฐ (์ด)
โข
httponly: JavaScript ์ ๊ทผ ์ฐจ๋จ ์ฌ๋ถ (๋ณด์ ๊ฐํ)
์ฟ ํค ์ฝ๊ธฐ
def get_cookie_view(request):
username = request.COOKIES.get('username', '์ต๋ช
')
return HttpResponse(f'Hello {username}')
Python
๋ณต์ฌ
์ฟ ํค ์ญ์
def delete_cookie_view(request):
response = HttpResponse("์ฟ ํค๊ฐ ์ญ์ ๋์์ต๋๋ค.")
response.delete_cookie('username')
return response
Python
๋ณต์ฌ
4. ์ฟ ํค ์ค์ต ์์
๋ฐฉ๋ฌธ ํ์ ์ ์ฅ ์์
def visit_count_view(request):
count = int(request.COOKIES.get('count', 0)) + 1
response = HttpResponse(f'๋น์ ์ ์ด ํ์ด์ง๋ฅผ {count}๋ฒ ๋ฐฉ๋ฌธํ์ต๋๋ค.')
response.set_cookie('count', count, max_age=3600)
return response
Python
๋ณต์ฌ
5. ๊ธฐํ ์ต์
์ต์
| ์ค๋ช
|
max_age | ์ ํจ ์๊ฐ (์ด ๋จ์) |
expires | ์ ํจ ๊ธฐ๊ฐ (๋ ์ง ์ง์ ) |
path | ์ฟ ํค๊ฐ ์ ํจํ URL ๊ฒฝ๋ก |
domain | ์ฟ ํค๊ฐ ์ ํจํ ๋๋ฉ์ธ |
secure | HTTPS ์์ฒญ์์๋ง ์ ์ก |
httponly | JS์์ ์ ๊ทผ ๊ธ์ง (๋ณด์ ๊ฐํ) |
6. ์ฟ ํค ๊ด๋ จ ์ฃผ์์ฌํญ
โข
์ฟ ํค๋ ๋ฌธ์์ด๋ง ์ ์ฅ ๊ฐ๋ฅ
โข
๊ฐ์ธ์ ๋ณด/๋น๋ฐ๋ฒํธ ์ ๋ ์ ์ฅํ์ง ๋ง ๊ฒ
โข
ํด๋ผ์ด์ธํธ์์ ์์ ๊ฐ๋ฅํ๋ฏ๋ก ์ ๋ขฐํ ์ ์์
โข
์ฅ๊ธฐ ์ ์ฅ๊ฐ ํ์ ์ ์ฌ์ฉ (์: ์๋ ๋ก๊ทธ์ธ ์ฒดํฌ, ๋ฐฉ๋ฌธ ๋ก๊ทธ)
7. ์ค์ต ๊ณผ์
์ค์ต๋ช
| ๋ชฉํ |
์ฟ ํค์ ์ฌ์ฉ์ ์ด๋ฆ ์ ์ฅ | ์
๋ ฅ๊ฐ ๋ฐ์ ์ฟ ํค ์ ์ฅ ๋ฐ ํ์ ๋ฉ์์ง |
๋ฐฉ๋ฌธ ํ์ ์นด์ดํธ | ๋ฐฉ๋ฌธ ์ ๋ง๋ค ์ซ์ ์ฆ๊ฐ |
์๋ ๋ก๊ทธ์ธ | remember_me ์ฟ ํค ํ์ฉ (๋ณด์ ์ฃผ์ ํฌํจ) |
์ฟ ํค ์ญ์ ๊ธฐ๋ฅ ์ถ๊ฐ | ๋ก๊ทธ์์ ์ ์ฟ ํค ์ญ์ ์ค์ต |
8. ์ ๋ฆฌ ์์ฝ
๊ธฐ๋ฅ | ์ฝ๋ ์์ |
์ฟ ํค ์ค์ | response.set_cookie('key', 'value', max_age=3600) |
์ฟ ํค ์กฐํ | request.COOKIES.get('key', 'default') |
์ฟ ํค ์ญ์ | response.delete_cookie('key') |