[Cookie][๊ฐœ๋…] ๐Ÿš€ HTTP์™€ ์ฟ ํ‚ค์˜ ๋ชจ๋“  ๊ฒƒ! ์ด๊ฒƒ๋งŒ ๋ณด๋ฉด ๋!

๊น€์ƒ์šฑยท2024๋…„ 10์›” 13์ผ
0
post-thumbnail

๐Ÿ” HTTP์˜ ๋น„๋ฐ€, ์™„๋ฒฝ ํ•ด๋ถ€!


1๏ธโƒฃ HTTP ํ”„๋กœํ† ์ฝœ์˜ ํŠน์ง•

  • ํด๋ผ์ด์–ธํŠธ(client)์™€ ์„œ๋ฒ„(server) ๊ฐ„์˜ ์š”์ฒญ-์‘๋‹ต ๊ตฌ์กฐ
    • ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์— ์š”์ฒญ(Request)์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
    • ์„œ๋ฒ„๋Š” ํ•ด๋‹น ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ ๋’ค, ์‘๋‹ต(Response)์„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด ๋ฐฉ์‹์€ ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๋Š” ๊ทผ๊ฐ„์ด ๋ฉ๋‹ˆ๋‹ค.

๐Ÿšช ๋Š๊น€ ์—†์ด ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•: HTTP์˜ ๋ฌด์ƒํƒœ์„ฑ (Stateless)

  • HTTP๋Š” Stateless(์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š”) ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.
    • ์š”์ฒญ์ด ์™„๋ฃŒ๋˜๋ฉด ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ์„ ๋Š์Šต๋‹ˆ๋‹ค.
    • ์ด ํŠน์ง•์€ ์ง€์†์ ์ธ ์—ฐ๊ฒฐ๋กœ ์ธํ•œ ์ž์› ๋‚ญ๋น„๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ๋ชฉ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งค ์š”์ฒญ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ์„ ๋งบ๋Š” ๋ฐฉ์‹์œผ๋กœ ์šด์˜๋ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ํ•˜์ง€๋งŒ ํŠน์ • ์ƒํ™ฉ์—์„œ๋Š” ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

  • ๋กœ๊ทธ์ธ ์œ ์ง€: ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•œ ํ›„ ๊ทธ ์ƒํƒœ๊ฐ€ ์œ ์ง€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ •๋ณด ์ €์žฅ: ์‡ผํ•‘๋ชฐ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ด์•„๋‘” ์ƒํ’ˆ์ด ๊ณ„์† ์œ ์ง€๋  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿง‘โ€๐Ÿ’ป Cookie์™€ Session์„ ํ†ตํ•œ ์ƒํƒœ ๊ด€๋ฆฌ

  • Cookie์™€ Session์€ HTTP์˜ ๋ฌด์ƒํƒœ์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค:
    • Cookie:
      • ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €) ์ธก์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ํŠน์ • ์ƒํƒœ ์ •๋ณด๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ์„œ๋ฒ„์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
    • Session:
      • ์„œ๋ฒ„ ์ธก์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ๋ฐ์ดํ„ฐ๋กœ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์ง€์†์ ์ธ ์ƒํƒœ ์œ ์ง€๋ฅผ ๋•์Šต๋‹ˆ๋‹ค.
      • ํด๋ผ์ด์–ธํŠธ๋Š” ์„ธ์…˜ ID๋ฅผ ์ฟ ํ‚ค์— ๋‹ด์•„ ์„œ๋ฒ„์— ์ „๋‹ฌํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ›ก HTTP ๋ณด์•ˆ์˜ ์•ฝ์ ๊ณผ HTTPS์˜ ๋“ฑ์žฅ

HTTP๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณด์•ˆ์ด ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ์กฐ์น˜๋กœ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • HTTPS (Hypertext Transfer Protocol Secure)

    • HTTP์— SSL/TLS ์•”ํ˜ธํ™” ๊ธฐ์ˆ ์„ ์ ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋„์ฒญ, ์œ„๋ณ€์กฐ, ํ”ผ์‹ฑ ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
    • URL์ด https://๋กœ ์‹œ์ž‘ํ•˜๋Š” ์›น์‚ฌ์ดํŠธ๊ฐ€ ์ด์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ

    • ๋กœ๊ทธ์ธ ๋ฐ ์ธ์ฆ ์ ˆ์ฐจ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๊ณ  ์ค‘์š”ํ•œ ์ •๋ณด์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์„ธ์…˜ ๊ด€๋ฆฌ์™€ ๋งŒ๋ฃŒ ์ •์ฑ…

    • ์„ธ์…˜ ํ•˜์ด์žฌํ‚น ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ์ผ์ • ์‹œ๊ฐ„๋งˆ๋‹ค ์„ธ์…˜์„ ๋งŒ๋ฃŒํ•˜๊ฑฐ๋‚˜, ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๐Ÿช ์ฟ ํ‚ค์˜ ๋ชจ๋“  ๊ฒƒ! ์‹ค์ „ ํ™œ์šฉ๋ฒ• ์™„๋ฒฝ ์ •๋ฆฌ


๐Ÿ”‘ ์ฟ ํ‚ค(Cookie)๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

  • jakarta.servlet.http.Cookie
    : ์ž๋ฐ” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ฟ ํ‚ค๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ(์‚ฌ์šฉ์ž)์˜ ์ปดํ“จํ„ฐ์— ์ €์žฅ๋˜๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

  • ์ž๋™ ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ

    • ์‚ฌ์šฉ์ž๊ฐ€ ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ•  ๋•Œ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฟ ํ‚ค๋ฅผ ์ž๋™์œผ๋กœ Request Header์— ํฌํ•จํ•ด ์„œ๋ฒ„์— ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
    • ์‚ฌ์šฉ์ž๊ฐ€ ๋ณ„๋„๋กœ ์กฐ์ž‘ํ•  ํ•„์š” ์—†์ด, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•Œ์•„์„œ ์ฟ ํ‚ค๋ฅผ ์„œ๋ฒ„๋กœ ์ „์†กํ•ด์ค๋‹ˆ๋‹ค.
  • Key-Value ์Œ์œผ๋กœ ๊ตฌ์„ฑ

    • ์ฟ ํ‚ค๋Š” Key์™€ Value ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜๋ฉฐ, ๋ฌธ์ž์—ด(String)๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค.
      ์˜ˆ) "user_id=abc123"
  • ๋ธŒ๋ผ์šฐ์ €๋ณ„๋กœ ๋…๋ฆฝ๋œ ์ฟ ํ‚ค ์ €์žฅ์†Œ

    • ๊ฐ™์€ ์ปดํ“จํ„ฐ์—์„œ๋„ Chrome๊ณผ Firefox์˜ ์ฟ ํ‚ค ์ €์žฅ์†Œ๋Š” ๋ถ„๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
      ๋”ฐ๋ผ์„œ ๋™์ผํ•œ ์›น์‚ฌ์ดํŠธ์— ์ ‘๊ทผํ•˜๋”๋ผ๋„ ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋กœ ์ธ์‹๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ› ์ฟ ํ‚ค ์‚ฌ์šฉ ์˜ˆ์‹œ

  1. ๐Ÿ”’ ์„ธ์…˜ ๊ด€๋ฆฌ

    • ์‚ฌ์šฉ์ž์˜ ์•„์ด๋””, ์ ‘์† ์‹œ๊ฐ„, ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ •๋ณด ๋“ฑ์„ ์ฟ ํ‚ค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๋ฅผ ํ†ตํ•ด ๋กœ๊ทธ์ธ ์œ ์ง€๋‚˜ ์ด์ „์— ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด์•˜๋˜ ์ƒํ’ˆ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๐ŸŽฏ ๊ฐœ์ธํ™”(Personalization)

    • ์‚ฌ์šฉ์ž๊ฐ€ ์ž์ฃผ ๋ฐฉ๋ฌธํ•˜๋Š” ํŽ˜์ด์ง€๋ฅผ ๋งž์ถคํ˜•์œผ๋กœ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      ์˜ˆ) ์ž์ฃผ ์ฐพ๋Š” ์ƒํ’ˆ ์ถ”์ฒœ ๋ชฉ๋ก์„ ๊ฐœ์ธํ™”ํ•ด ํ‘œ์‹œ
  3. ๐Ÿ“Š ํŠธ๋ž˜ํ‚น(Tracking)

    • ์‚ฌ์šฉ์ž์˜ ์ด๋™ ๊ฒฝ๋กœ๋‚˜ ํ–‰๋™ ํŒจํ„ด์„ ๋ถ„์„ํ•ด ๋งˆ์ผ€ํŒ…์— ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.
      ์˜ˆ) ๋ฐฉ๋ฌธ ํŽ˜์ด์ง€์™€ ํด๋ฆญํ•œ ๊ด‘๊ณ ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งž์ถคํ˜• ๊ด‘๊ณ  ์ œ๊ณต

๐Ÿ”’ HTTP ์ฟ ํ‚ค์™€ ์„ธ์…˜ ์ฟ ํ‚ค์˜ ์ฐจ์ด

1. HTTP ์ฟ ํ‚ค์™€ ์„ธ์…˜ ์ฟ ํ‚ค์˜ ์ฐจ์ด

  • ์„ธ์…˜ ์ฟ ํ‚ค
    • ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ์œผ๋ฉด ์ž๋™์œผ๋กœ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.
  • ์˜๊ตฌ ์ฟ ํ‚ค
    • ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ์„ค์ •ํ•˜๋ฉด ์„ค์ •๋œ ์‹œ๊ฐ„๊นŒ์ง€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์žฅ๊ธฐ ๋กœ๊ทธ์ธ ์œ ์ง€๋‚˜ ์‚ฌ์šฉ์ž ์„ ํ˜ธ๋„ ์ €์žฅ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

2. ์ฟ ํ‚ค์™€ ๋ณด์•ˆ

  • ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ์ง์ ‘ ์ฟ ํ‚ค์— ์ €์žฅํ•˜๋ฉด ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋Œ€์‹ , ์„ธ์…˜ ID๋‚˜ ํ† ํฐ๊ณผ ๊ฐ™์€ ๊ฐ„์ ‘์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” ์„œ๋ฒ„์—์„œ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

3. SameSite์™€ Secure ์˜ต์…˜

  • Secure ์˜ต์…˜
    • HTTPS ํ™˜๊ฒฝ์—์„œ๋งŒ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•˜๋„๋ก ์„ค์ •ํ•ด ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • SameSite ์˜ต์…˜
    • ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ์—์„œ์˜ ์š”์ฒญ์— ๋Œ€ํ•ด ์ฟ ํ‚ค ์ „์†ก์„ ์ œํ•œํ•ด CSRF(์‚ฌ์ดํŠธ ๊ฐ„ ์š”์ฒญ ์œ„์กฐ) ๊ณต๊ฒฉ์„ ์˜ˆ๋ฐฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ›  ์ฟ ํ‚ค ๊ตฌ์„ฑ ์š”์†Œ ์™„๋ฒฝ ๋ถ„์„

๐Ÿ’ก ์ฟ ํ‚ค์˜ ์‹ค์ƒํ™œ ์˜ˆ์‹œ์™€ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‰ฝ๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ธฐ!

์ฟ ํ‚ค๋Š” ์›น ์‚ฌ์ดํŠธ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜๊ณผ ๊ธฐ๋Šฅ ๊ฐœ์„ ์— ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ฟ ํ‚ค์˜ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์˜ˆ์™€ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿช ์ฟ ํ‚ค์˜ ์‚ฌ์šฉ ์˜ˆ

  1. ID ์ €์žฅ (์ž๋™ ๋กœ๊ทธ์ธ)

    • ๋กœ๊ทธ์ธ ํ›„ ID๋ฅผ ์ €์žฅํ•ด ๋‹ค์Œ ๋ฐฉ๋ฌธ ์‹œ ์ž๋™ ๋กœ๊ทธ์ธ๋ฉ๋‹ˆ๋‹ค.
  2. ์ผ์ฃผ์ผ๊ฐ„ ๋‹ค์‹œ ๋ณด์ง€ ์•Š๊ธฐ

    • ํŒ์—…์ด๋‚˜ ๊ณต์ง€์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ '์ผ์ฃผ์ผ๊ฐ„ ๋‹ค์‹œ ๋ณด์ง€ ์•Š๊ธฐ'๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ•ด๋‹น ์„ค์ •์ด ์ฟ ํ‚ค์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  3. ์ตœ๊ทผ ๊ฒ€์ƒ‰ํ•œ ์ƒํ’ˆ ๊ด‘๊ณ  ์ถ”์ฒœ

    • ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒ€์ƒ‰ํ•œ ์ƒํ’ˆ ๊ธฐ๋ก์„ ๋ฐ”ํƒ•์œผ๋กœ ๋งž์ถคํ˜• ์ƒํ’ˆ ๊ด‘๊ณ ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  4. ์‡ผํ•‘๋ชฐ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ธฐ๋Šฅ

    • ๋กœ๊ทธ์ธํ•˜์ง€ ์•Š์•„๋„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด๊ธด ์ƒํ’ˆ์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ •๋ณด๊ฐ€ ์ฟ ํ‚ค์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๐Ÿงฉ ์ฟ ํ‚ค์˜ ๊ตฌ์„ฑ ์š”์†Œ

  1. ์ด๋ฆ„(Name)

    • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ฟ ํ‚ค๋ฅผ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์œ ํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ: user_id, session_token.
  2. ๊ฐ’(Value)

    • ์ฟ ํ‚ค ์ด๋ฆ„๊ณผ ๋งคํ•‘๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ฐ’์ž…๋‹ˆ๋‹ค.
    • ์˜ˆ: user_id=abc123.
  3. ์œ ํšจ๊ธฐ๊ฐ„(Expiration Date)

    • ์ฟ ํ‚ค์˜ ์œ ํšจ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
      • ์„ธ์…˜ ์ฟ ํ‚ค: ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ์œผ๋ฉด ์‚ญ์ œ.
      • ์˜๊ตฌ ์ฟ ํ‚ค: ์ง€์ •๋œ ์œ ํšจ๊ธฐ๊ฐ„๊นŒ์ง€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
  4. ๋„๋ฉ”์ธ(Domain)

    • ์ฟ ํ‚ค๊ฐ€ ์ ์šฉ๋˜๋Š” ๋„๋ฉ”์ธ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, example.com์—์„œ๋งŒ ํ•ด๋‹น ์ฟ ํ‚ค๊ฐ€ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.
  5. ๊ฒฝ๋กœ(Path)

    • ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•  ์š”์ฒญ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ: /shopping ๊ฒฝ๋กœ๋กœ ์„ค์ •๋œ ์ฟ ํ‚ค๋Š” ํ•ด๋‹น ๊ฒฝ๋กœ์— ์žˆ๋Š” ํŽ˜์ด์ง€์—์„œ๋งŒ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.

๐Ÿš€ ์ฟ ํ‚ค์˜ ๋™์ž‘ ์ˆœ์„œ ์™„๋ฒฝ ์ •๋ฆฌ!

์ฟ ํ‚ค๋Š” ์„œ๋ฒ„์™€ ๋ธŒ๋ผ์šฐ์ € ๊ฐ„์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต ๊ณผ์ •์—์„œ ์ž๋™์œผ๋กœ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉฐ, ์‚ฌ์šฉ์ž์˜ ์ •๋ณด์™€ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

  1. Client๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญ

    • ์‚ฌ์šฉ์ž๊ฐ€ ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„๋กœ ํŽ˜์ด์ง€ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  2. WAS(Web Application Server)๊ฐ€ ์ฟ ํ‚ค ์ƒ์„ฑ

    • ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ฟ ํ‚ค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. HTTP Header์— ์ฟ ํ‚ค๋ฅผ ํฌํ•จํ•ด ์‘๋‹ต

    • ์„œ๋ฒ„๋Š” ์ฟ ํ‚ค๋ฅผ HTTP ์‘๋‹ต ํ—ค๋”์— ํฌํ•จํ•ด ํด๋ผ์ด์–ธํŠธ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
    Set-Cookie: session_id=abc123; Expires=Wed, 18 Oct 2024 12:00:00 GMT
  4. Browser๊ฐ€ ์ฟ ํ‚ค๋ฅผ PC์— ์ €์žฅ

    • ๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์ฟ ํ‚ค๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ๋™์ผํ•œ ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•  ๋•Œ ์ด ์ฟ ํ‚ค๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  5. Browser๊ฐ€ ์ข…๋ฃŒ๋˜์–ด๋„ ์ฟ ํ‚ค๊ฐ€ ๋งŒ๋ฃŒ๋˜์ง€ ์•Š์œผ๋ฉด ์œ ์ง€

    • ์ฟ ํ‚ค์˜ ์œ ํšจ๊ธฐ๊ฐ„์ด ์„ค์ •๋œ ๊ฒฝ์šฐ, ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•ด๋„ ํ•ด๋‹น ์ฟ ํ‚ค๋Š” ์‚ญ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  6. ๋™์ผ ์‚ฌ์ดํŠธ ์žฌ๋ฐฉ๋ฌธ ์‹œ ์ฟ ํ‚ค ์ „์†ก

    • ์‚ฌ์šฉ์ž๊ฐ€ ๋™์ผํ•œ ์‚ฌ์ดํŠธ๋ฅผ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ์ €์žฅ๋œ ์ฟ ํ‚ค๋ฅผ ์š”์ฒญ์— ํฌํ•จํ•ด ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
      ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ๋กœ๊ทธ์ธ ์ƒํƒœ๊ฐ€ ์œ ์ง€๋˜๊ฑฐ๋‚˜, ์ด์ „์— ๋ณด๋˜ ํŽ˜์ด์ง€ ์ •๋ณด๋ฅผ ๊ทธ๋Œ€๋กœ ์ด์–ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿงฉ ์ฟ ํ‚ค์˜ ํŠน์ง•

  1. ๊ตฌ์„ฑ ์š”์†Œ

    • ์ฟ ํ‚ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •๋ณด๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
      • ์ด๋ฆ„(Name): ์ฟ ํ‚ค๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ณ ์œ  ์ด๋ฆ„.
      • ๊ฐ’(Value): ์ฟ ํ‚ค์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ.
      • ๋งŒ๋ฃŒ์ผ(Expiration Date): ์ฟ ํ‚ค์˜ ์œ ํšจ ๊ธฐ๊ฐ„.
      • ๊ฒฝ๋กœ(Path): ์ฟ ํ‚ค๊ฐ€ ์ ์šฉ๋˜๋Š” ๊ฒฝ๋กœ ์ •๋ณด.
  2. ํด๋ผ์ด์–ธํŠธ๋‹น ์ €์žฅ ๊ฐ€๋Šฅํ•œ ์ฟ ํ‚ค ๊ฐœ์ˆ˜

    • ๋ธŒ๋ผ์šฐ์ €์—๋Š” ์ด 50 ~ 180๊ฐœ์˜ ์ฟ ํ‚ค๊ฐ€ ์ €์žฅ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      ์ด ๊ฐœ์ˆ˜๋Š” ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
  3. ํ•˜๋‚˜์˜ ๋„๋ฉ”์ธ๋‹น ์ฟ ํ‚ค ์ตœ๋Œ€ ๊ฐœ์ˆ˜

    • ๋™์ผํ•œ ๋„๋ฉ”์ธ์—์„œ๋Š” ์ตœ๋Œ€ 20๊ฐœ์˜ ์ฟ ํ‚ค๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ์ฟ ํ‚ค ํฌ๊ธฐ ์ œํ•œ

    • ํ•˜๋‚˜์˜ ์ฟ ํ‚ค๋Š” ์ตœ๋Œ€ 4KB(4096๋ฐ”์ดํŠธ)๊นŒ์ง€ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ์ฟ ํ‚ค๋Š” ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๐Ÿ”’ ์ถ”๊ฐ€ ๋ณด์•ˆ ๊ณ ๋ ค ์‚ฌํ•ญ

  1. ์ฟ ํ‚ค ๋งŒ๋ฃŒ์ผ ์„ค์ •

    • ์œ ํšจ๊ธฐ๊ฐ„์ด ๊ธด ์ฟ ํ‚ค๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์•„์›ƒํ•ด๋„ ๋‚จ์•„ ์žˆ์„ ์ˆ˜ ์žˆ์–ด, ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      ๋”ฐ๋ผ์„œ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” ์˜๊ตฌ ์ฟ ํ‚ค๋กœ ์„ค์ •ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  2. ๋„๋ฉ”์ธ๊ณผ ๊ฒฝ๋กœ ์„ค์ •

    • ์ฟ ํ‚ค๋ฅผ ๋„๋ฉ”์ธ๋ณ„, ๊ฒฝ๋กœ๋ณ„๋กœ ์ œํ•œํ•˜๋ฉด ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ์ค„์ด๊ณ  ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ๋ธŒ๋ผ์šฐ์ €๋ณ„ ์ฟ ํ‚ค ์ฒ˜๋ฆฌ ์ฐจ์ด

    • ๊ฐ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฟ ํ‚ค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์— ๋ฏธ์„ธํ•œ ์ฐจ์ด๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ, ๋‹ค์–‘ํ•œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿช ์ฟ ํ‚ค ์„ค์ • ์˜ˆ์‹œ

  • ์ฟ ํ‚ค ์ด๋ฆ„(name): user_token
  • ์ฟ ํ‚ค ๊ฐ’(value): abc123
  • ์œ ํšจ ๊ธฐ๊ฐ„(Expiration Date): 2024๋…„ 10์›” 15์ผ
  • ์œ ํšจ ๋„๋ฉ”์ธ: example.com
  • ์ ์šฉ ๊ฒฝ๋กœ(Path): /account

์ด ์˜ˆ์‹œ๋Š” example.com ๋„๋ฉ”์ธ์—์„œ ํŠน์ • ๊ฒฝ๋กœ์— ์ฟ ํ‚ค๊ฐ€ ์–ด๋–ป๊ฒŒ ์„ค์ •๋˜๊ณ , ์ „์†ก๋˜๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.


๐Ÿš€ ์ฟ ํ‚ค ์„ค์ •๊ณผ ์ „์†ก ๊ณผ์ •

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ /home.html ํŽ˜์ด์ง€ ์š”์ฒญ

    • ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด /home.html์— ์ ‘์†ํ•˜๋ฉด ์„œ๋ฒ„๋กœ GET ์š”์ฒญ์ด ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
    GET /home.html HTTP/1.1
  2. ์„œ๋ฒ„๊ฐ€ ์ฟ ํ‚ค ์„ค์ •๊ณผ ํ•จ๊ป˜ ์‘๋‹ต

    • ์„œ๋ฒ„๋Š” 200 OK ์‘๋‹ต๊ณผ ํ•จ๊ป˜ Set-Cookie ํ—ค๋”์— ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ๋‹ด์•„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
    Set-Cookie: user_token=abc123; 
                Expires=Wed, 15 Oct 2024 09:00:00 GMT; 
                Domain=example.com; 
                Path=/account

    ์ฟ ํ‚ค ๊ตฌ์„ฑ ์š”์†Œ:

    • user_token=abc123: ์ฟ ํ‚ค ์ด๋ฆ„๊ณผ ๊ฐ’
    • Expires: 2024๋…„ 10์›” 15์ผ๊นŒ์ง€ ์œ ํšจ
    • Domain: example.com์—์„œ ์œ ํšจ
    • Path: /account ๊ฒฝ๋กœ์—๋งŒ ์ ์šฉ
  3. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฟ ํ‚ค ์ €์žฅ

    • ๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์ฟ ํ‚ค๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ๋™์ผํ•œ ๋„๋ฉ”์ธ๊ณผ ๊ฒฝ๋กœ์— ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์ด ์ฟ ํ‚ค๊ฐ€ ์ž๋™์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  4. ํด๋ผ์ด์–ธํŠธ๊ฐ€ /account/profile.html ํŽ˜์ด์ง€ ์š”์ฒญ

    • ์‚ฌ์šฉ์ž๊ฐ€ /account/profile.html์— ์ ‘์†ํ•  ๋•Œ ๋ธŒ๋ผ์šฐ์ €๋Š” ์š”์ฒญ ํ—ค๋”์— ์ฟ ํ‚ค๋ฅผ ํฌํ•จํ•ด ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
    GET /account/profile.html HTTP/1.1
    Cookie: user_token=abc123

    ์„œ๋ฒ„๋Š” ์ด ์ฟ ํ‚ค๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‚ฌ์šฉ์ž์˜ ์ƒํƒœ๋ฅผ ํŒŒ์•…ํ•˜๊ณ , ์„ธ์…˜ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿงฉ ์ฟ ํ‚ค ์„ค์ •์˜ ์ฃผ์š” ๊ฐœ๋…

  1. ๋„๋ฉ”์ธ๊ณผ ๊ฒฝ๋กœ ์ œํ•œ

    • ์ด ์˜ˆ์‹œ์—์„œ๋Š” example.com ๋„๋ฉ”์ธ๊ณผ /account ๊ฒฝ๋กœ์— ์ฟ ํ‚ค๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋‚˜ ๋„๋ฉ”์ธ์—์„œ๋Š” ์ฟ ํ‚ค๊ฐ€ ์ „์†ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. ์œ ํšจ ๊ธฐ๊ฐ„ ์„ค์ •

    • ์ฟ ํ‚ค์˜ ์œ ํšจ ๊ธฐ๊ฐ„์„ 2024๋…„ 10์›” 15์ผ๋กœ ์„ค์ •ํ•˜์—ฌ ํ•ด๋‹น ๋‚ ์งœ๊นŒ์ง€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฟ ํ‚ค๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ฟ ํ‚ค ์ž๋™ ์ „์†ก

    • ์„ค์ •๋œ ์ฟ ํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ž๋™์œผ๋กœ ์ „์†กํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž๋Š” ๋กœ๊ทธ์ธ์„ ์œ ์ง€ํ•˜๊ฑฐ๋‚˜, ๋งž์ถคํ˜• ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿงฉ Java์—์„œ ์ฟ ํ‚ค ์ƒ์„ฑ๊ณผ ํ™œ์šฉ ๋ฐฉ๋ฒ•

๐Ÿ’ก ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ฟ ํ‚ค ๊ธฐ๋Šฅ๊ณผ ์ฝ”๋“œ ์˜ˆ์‹œ!

์ฟ ํ‚ค๋Š” ์„ธ์…˜ ๊ด€๋ฆฌ์™€ ์‚ฌ์šฉ์ž ๋งž์ถค ๊ฒฝํ—˜ ์ œ๊ณต์— ํ•„์ˆ˜์ ์ธ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ฟ ํ‚ค์˜ ์ฃผ์š” ๊ธฐ๋Šฅ๊ณผ ์ด๋ฅผ Java ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์‹ค๋ฌด์— ๋ฐ”๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ์ดํ•ด๋ฅผ ๋„์™€๋“œ๋ฆด๊ฒŒ์š”! ๐Ÿ˜Š


๐Ÿงฉ ์ฟ ํ‚ค์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

Cookie cookie = new Cookie(String name, String value);
  • ์ฟ ํ‚ค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ด๋ฆ„(name)๊ณผ ๊ฐ’(value)์„ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ: Cookie("user_token", "abc123")

2. ์ฟ ํ‚ค ๊ฐ’ ์„ค์ • ๋ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

  • ๊ฐ’ ์„ค์ •:
    cookie.setValue(String value);
  • ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ:
    String value = cookie.getValue();
  • ์ฟ ํ‚ค์˜ ๊ฐ’์„ ์„ค์ •ํ•˜๊ณ  ๊ฐ€์ ธ์˜ค๋Š” ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. ์„ธ์…˜ ํ† ํฐ์ด๋‚˜ ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์ฟ ํ‚ค์— ์ €์žฅํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

3. ๋„๋ฉ”์ธ ์„ค์ • ๋ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

  • ๋„๋ฉ”์ธ ์„ค์ •:
    cookie.setDomain(String domain);
  • ๋„๋ฉ”์ธ ๊ฐ€์ ธ์˜ค๊ธฐ:
    String domain = cookie.getDomain();
  • ์ฟ ํ‚ค๊ฐ€ ์œ ํšจํ•œ ๋„๋ฉ”์ธ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: example.com

4. ๊ฒฝ๋กœ(Path) ์„ค์ • ๋ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

  • ๊ฒฝ๋กœ ์„ค์ •:
    cookie.setPath(String path);
  • ๊ฒฝ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ:
    String path = cookie.getPath();
  • ํŠน์ • ๊ฒฝ๋กœ์—์„œ๋งŒ ์ฟ ํ‚ค๊ฐ€ ์œ ํšจํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: /account ๊ฒฝ๋กœ

5. ์œ ํšจ๊ธฐ๊ฐ„ ์„ค์ • ๋ฐ ์‚ญ์ œ

  • ์œ ํšจ๊ธฐ๊ฐ„ ์„ค์ •:
    cookie.setMaxAge(int expiry);
  • ์œ ํšจ๊ธฐ๊ฐ„ ๊ฐ€์ ธ์˜ค๊ธฐ:
    int expiry = cookie.getMaxAge();
  • ์ฟ ํ‚ค ์‚ญ์ œ:
    cookie.setMaxAge(0);
  • ์ฟ ํ‚ค์˜ ์œ ํšจ๊ธฐ๊ฐ„์„ ์ดˆ ๋‹จ์œ„๋กœ ์„ค์ •ํ•˜๋ฉฐ, 0์œผ๋กœ ์„ค์ • ์‹œ ์ฟ ํ‚ค๊ฐ€ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.

6. ์ฟ ํ‚ค๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ์ „์†ก

response.addCookie(cookie);
  • ์„œ๋ฒ„์—์„œ ์ƒ์„ฑ๋œ ์ฟ ํ‚ค๋ฅผ HTTP ์‘๋‹ต์— ์ถ”๊ฐ€ํ•ด ํด๋ผ์ด์–ธํŠธ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

7. ํด๋ผ์ด์–ธํŠธ์—์„œ ์ฟ ํ‚ค ๊ฐ€์ ธ์˜ค๊ธฐ

Cookie[] cookies = request.getCookies();
  • ํด๋ผ์ด์–ธํŠธ์— ์ €์žฅ๋œ ๋ชจ๋“  ์ฟ ํ‚ค๋ฅผ ๋ฐฐ์—ด๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๐Ÿš€ ์ฟ ํ‚ค ํ™œ์šฉ ์˜ˆ์‹œ ์ฝ”๋“œ

์•„๋ž˜๋Š” ์ฟ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๋กœ ์ „์†กํ•œ ํ›„ ๋‹ค์‹œ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

// ์ฟ ํ‚ค ์ƒ์„ฑ ๋ฐ ์„ค์ •
Cookie userCookie = new Cookie("user_token", "abc123");
userCookie.setDomain("example.com");
userCookie.setPath("/account");
userCookie.setMaxAge(3600); // 1์‹œ๊ฐ„ ๋™์•ˆ ์œ ํšจ

// ์ฟ ํ‚ค๋ฅผ ์‘๋‹ต์— ์ถ”๊ฐ€
response.addCookie(userCookie);

// ์š”์ฒญ์—์„œ ์ฟ ํ‚ค ๊ฐ€์ ธ์˜ค๊ธฐ
Cookie[] cookies = request.getCookies();
if (cookies != null) {
    for (Cookie cookie : cookies) {
        if ("user_token".equals(cookie.getName())) {
            System.out.println("User Token: " + cookie.getValue());
        }
    }
}

๐Ÿ“Œ ์„ค๋ช…

  1. ์ฟ ํ‚ค ์ƒ์„ฑ ๋ฐ ์„ค์ •: user_token์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ฟ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๋„๋ฉ”์ธ๊ณผ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  2. ํด๋ผ์ด์–ธํŠธ๋กœ ์ „์†ก: response.addCookie()๋ฅผ ํ†ตํ•ด ์ฟ ํ‚ค๋ฅผ ๋ธŒ๋ผ์šฐ์ €๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  3. ์ฟ ํ‚ค ๊ฐ€์ ธ์˜ค๊ธฐ: request.getCookies()๋ฅผ ํ†ตํ•ด ์ €์žฅ๋œ ์ฟ ํ‚ค๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ›์•„์™€ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€