Search

์ฟ ํ‚ค (Cookie)

์ฟ ํ‚ค (Cookie)

์ฟ ํ‚ค๋ž€? (cookie)

: ์›น ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ ์กฐ๊ฐ

์ฟ ํ‚ค ์ƒ์„ฑ ๋ฐ ์ €์žฅ

1.
์ฟ ํ‚ค ์ƒ์„ฑ ๋‹จ๊ณ„
์ฟ ํ‚ค๋Š” ์ฒ˜์Œ์— ์„œ๋ฒ„ ์ธก์—์„œ ์ƒ์„ฑ๋˜์–ด ์‘๋‹ต์— ๋‹ด๊ฒจ์„œ ์ „์†ก๋จ
2.
์ฟ ํ‚ค ์ €์žฅ ๋‹จ๊ณ„
ํด๋ผ์ด์–ธํŠธ๋Š” ์‘๋‹ต๋ฐ›์€ ์ฟ ํ‚ค๋ฅผ ์ฟ ํ‚ค ์ €์žฅ์†Œ์— ์ €์žฅํ•จ
3.
์ฟ ํ‚ค ์ „์†ก ๋‹จ๊ณ„
ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ™์€ ๊ฒฝ๋กœ(URL) ์š”์ฒญ ์‹œ, ์ฟ ํ‚ค๋ฅผ ํฌํ•จํ•˜์—ฌ ์š”์ฒญ ์ „์†กํ•จ

์ฟ ํ‚ค ์ƒ์„ฑ ๋ฐ ์ €์žฅ

โ€ข
์ฟ ํ‚ค๋Š” ์„œ๋ฒ„ ์ธก์—์„œ ์ƒ์„ฑ
โ€ข
์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก์— ์ €์žฅ

์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ๊ธฐ๋Šฅ

โ€ข
์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐ ๋กœ๊ทธ์ธ ๊ด€๋ฆฌ
โ€ข
์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ฐ ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ
โ€ข
์•„์ด๋”” ์ €์žฅ
โ€ข
์–ธ์–ด ๋ฐ ์ง€์—ญ ์„ค์ •
โ€ข
๋‹คํฌ ๋ชจ๋“œ

Cookie ๋ฉ”์†Œ๋“œ

๋ฉ”์†Œ๋“œ
์„ค๋ช…
Cookie(String name, String value)
์ง€์ •๋œ ์ด๋ฆ„๊ณผ ๊ฐ’์œผ๋กœ ์ƒˆ๋กœ์šด ์ฟ ํ‚ค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
getName()
์ฟ ํ‚ค์˜ ์ด๋ฆ„์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
getValue()
์ฟ ํ‚ค์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
setValue(String value)
์ฟ ํ‚ค์˜ ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
getPath()
์ฟ ํ‚ค์˜ ๊ฒฝ๋กœ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
setPath(String path)
์ฟ ํ‚ค์˜ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
getDomain()
์ฟ ํ‚ค์˜ ๋„๋ฉ”์ธ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
setDomain(String domain)
์ฟ ํ‚ค์˜ ๋„๋ฉ”์ธ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
getMaxAge()
์ฟ ํ‚ค์˜ ์œ ํšจ ๊ธฐ๊ฐ„์„ ์ดˆ ๋‹จ์œ„๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
setMaxAge(int maxAge)
์ฟ ํ‚ค์˜ ์œ ํšจ ๊ธฐ๊ฐ„์„ ์ดˆ ๋‹จ์œ„๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
getSecure()
์ฟ ํ‚ค์˜ ๋ณด์•ˆ ์†์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ถ€์šธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. (true: ๋ณด์•ˆ ์ฟ ํ‚ค, false: ์ผ๋ฐ˜ ์ฟ ํ‚ค)
setSecure(boolean secure)
์ฟ ํ‚ค์˜ ๋ณด์•ˆ ์†์„ฑ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. (true: ๋ณด์•ˆ ์ฟ ํ‚ค, false: ์ผ๋ฐ˜ ์ฟ ํ‚ค)
isHttpOnly()
์ฟ ํ‚ค๊ฐ€ HTTP ์ „์šฉ์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. (true: HTTP ์ „์šฉ, false: JavaScript๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ)
setHttpOnly(boolean httpOnly)
์ฟ ํ‚ค๋ฅผ HTTP ์ „์šฉ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. (true: HTTP ์ „์šฉ, false: JavaScript๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ)

์ฟ ํ‚ค ์ƒ์„ฑ

Cookie cookie = new Cookie("์ฟ ํ‚ค ์ด๋ฆ„", ์ฟ ํ‚ค ๊ฐ’); response.addCookie(cookie);
Java
๋ณต์‚ฌ
โ€ข
์ฟ ํ‚ค๋Š” ์„œ๋ฒ„ ์ธก์—์„œ ๊ฐ์ฒด๋กœ ์ƒ์„ฑํ•˜๊ณ  ์‘๋‹ต(response) ๋ฉ”์‹œ์ง€์— ๋‹ด์•„์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ณด๋‚ด์ฃผ์–ด์•ผ ํด๋ผ์ด์–ธํŠธ์˜ ์ฟ ํ‚ค ์ €์žฅ์†Œ์— ์ €์žฅํ•œ๋‹ค.

์ฟ ํ‚ค ์ •๋ณด

Cookie[] cookies = request.getCookies(); String myCookie = ""; for(int i = 0 ; i < cookies.length ; i++) { if( cookies[i].getName().equals("์ฟ ํ‚ค์ด๋ฆ„") ) { myCookie = cookies[i].getValue(); } }
Java
๋ณต์‚ฌ

์ฟ ํ‚ค ์‚ญ์ œ

Cookie cookie = new Cookie("์‚ญ์ œํ•  ์ฟ ํ‚ค๋ช…", ""); cookie.setMaxAge(0); // ์œ ํšจ์‹œ๊ฐ„ 0์œผ๋กœ ์„ค์ • response.addCookie(cookie);
Java
๋ณต์‚ฌ
โ€ข
์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์ง์ ‘์ ์œผ๋กœ delete, remove ํ•˜๋Š” ๊ฐœ๋…์ด ์•„๋‹ˆ๋ผ ์„œ๋ฒ„ ์ธก์—์„œ ์ฟ ํ‚ค๋ฅผ ๋‹ค์‹œ ์ƒ์„ฑํ•ด์„œ ์œ ํšจ ์‹œ๊ฐ„์„ ์†Œ๋ฉธ์‹œํ‚จ ์ฟ ํ‚ค๋กœ ๋ฎ์–ด์“ฐ๊ธฐ ํ•˜๋Š” ๊ฐœ๋…์œผ๋กœ ์‚ญ์ œํ•œ๋‹ค.

์ฟ ํ‚ค๋ฅผ ํ™œ์šฉํ•œ ์•„์ด๋”” ์ €์žฅ

1.
๋กœ๊ทธ์ธ ํ™”๋ฉด์—์„œ id ์ €์žฅ ์ฒดํฌ ์ •๋ณด๋ฅผ ์ „์†กํ•œ๋‹ค.
2.
๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ ํ”„๋กœ์„ธ์Šค์—์„œ,
a.
์ฒดํฌ๋ฐ•์Šค ์ฒดํฌ ์‹œ, ๋กœ๊ทธ์ธ ์•„์ด๋””์— ๋Œ€ํ•œ ์ฟ ํ‚ค, ๊ทธ๋ฆฌ๊ณ  ์•„์ด๋”” ์ €์žฅ ์ฒดํฌ ์—ฌ๋ถ€์— ๋Œ€ํ•œ ์ฟ ํ‚ค๋ฅผ ์ƒ์„ฑํ•ด์„œ ์‘๋‹ตํ•œ๋‹ค.
b.
์ฒดํฌ๋ฐ•์Šค ํ•ด์ œ ์‹œ, ๋กœ๊ทธ์ธ ์•„์ด๋”” ์ฟ ํ‚ค, ์•„์ด๋”” ์ €์žฅ ์ฒดํฌ ์—ฌ๋ถ€ ์ฟ ํ‚ค์˜ ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ 0์œผ๋กœ ๋งŒ๋“ค๊ณ  ์‘๋‹ตํ•œ๋‹ค.
3.
๋กœ๊ทธ์ธ ํ™”๋ฉด์—์„œ ์•„์ด๋”” ์ €์žฅ ์—ฌ๋ถ€์— ๋Œ€ํ•œ ์ฟ ํ‚ค๋ฅผ ํ™•์ธํ•˜๊ณ  ์•„์ด๋”” ์ €์žฅ์ด ์ฒดํฌ๊ฐ€ ๋˜์–ด ์žˆ์œผ๋ฉด, ๋กœ๊ทธ์ธ ์•„์ด๋”” ๊ฐ’์„ ๊ฐ€์ ธ์™€์„œ ๋กœ๊ทธ์ธ ์ž…๋ ฅ ์ฐฝ์— ๋„ฃ์–ด์ค€๋‹ค.
โ€ข
cookie.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>์•„์ด๋”” ์ €์žฅ</title> </head> <body> <% // ์ฟ ํ‚ค ๊ฐ€์ ธ์˜ค๊ธฐ Cookie[] cookies = request.getCookies(); // ์ฟ ํ‚ค์˜ ์•„์ด๋””์™€ ์ €์žฅ์—ฌ๋ถ€ String username = ""; String rememberId = ""; if( cookies != null ) for(int i = 0 ; i < cookies.length ; i++) { if( cookies[i].getName().equals("username") ) username = cookies[i].getValue(); // ์ €์žฅ๋œ ๋กœ๊ทธ์ธ ์•„์ด๋”” if( cookies[i].getName().equals("rememberId") ) rememberId = cookies[i].getValue(); // ์ €์žฅ ์—ฌ๋ถ€ - ์ €์žฅ(on) } %> <h1>๋กœ๊ทธ์ธ</h1> <form action="cookie_pro.jsp" method="post"> <p>์•„์ด๋”” : <input type="text" name="username" /></p> <p>๋น„๋ฐ€๋ฒˆํ˜ธ : <input type="password" name="password" /></p> <p> <% if(rememberId.equals("on")) { %> <input type="checkbox" name="remember-id" id="remember-id" checked /> <% } else { %> <input type="checkbox" name="remember-id" id="remember-id" /> <% } %> <label for="remember-id">์•„์ด๋”” ์ €์žฅ</label> </p> <p><input type="submit" value="๋กœ๊ทธ์ธ"/></p> </form> </body> </html>
HTML
๋ณต์‚ฌ
โ€ข
cookie_pro.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String username = request.getParameter("username"); String passowrd = request.getParameter("password"); String rememberId = request.getParameter("remember-id"); // checkbox ์ฒดํฌ ์‹œ, ๊ธฐ๋ณธ๊ฐ’ on ์œผ๋กœ ๋„˜์–ด์˜จ๋‹ค. out.println("rememberId : " + rememberId + "<br>"); // ์•„์ด๋”” ์ €์žฅ ์ฒดํฌ ์‹œ, ์ฟ ํ‚ค ์ƒ์„ฑ if( rememberId != null && rememberId.equals("on") ) { // ์ฟ ํ‚ค ์ƒ์„ฑ Cookie cookieId = new Cookie("username", username); // ์•„์ด๋”” ์ฟ ํ‚ค Cookie cookieRememberId = new Cookie("rememberId", rememberId); // ์•„์ด๋”” ์ €์žฅ ์ฟ ํ‚ค response.addCookie(cookieId); response.addCookie(cookieRememberId); out.println("์•„์ด๋””๋ฅผ ์ฟ ํ‚ค์— ์ €์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.<br>"); } // ์•„์ด๋”” ์ €์žฅ ๋ฏธ์ฒดํฌ ์‹œ, ์ฟ ํ‚ค ์‚ญ์ œ else { Cookie cookieId = new Cookie("username", username); // ์•„์ด๋”” ์ฟ ํ‚ค Cookie cookieRememberId = new Cookie("rememberId", rememberId); // ์•„์ด๋”” ์ €์žฅ ์ฟ ํ‚ค // ์ฟ ํ‚ค ๋งŒ๋ฃŒ cookieId.setMaxAge(0); cookieRememberId.setMaxAge(0); response.addCookie(cookieId); response.addCookie(cookieRememberId); out.println("์•„์ด๋””๋ฅผ ์ฟ ํ‚ค์—์„œ ์‚ญ์ œํ–ˆ์Šต๋‹ˆ๋‹ค.<br>"); } %> <a href="cookie.jsp">cookie.jsp</a>
Java
๋ณต์‚ฌ