[HTTP] Redirection

HTTP Redirection

๐Ÿš€3xx (Redirection)

์š”์ฒญ์„ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด ์œ ์ € ์—์ด์ „ํŠธ(์›น ๋ธŒ๋ผ์šฐ์ €)์˜ ์ถ”๊ฐ€์กฐ์น˜ ํ•„์š”

์›น ๋ธŒ๋ผ์šฐ์ €๋Š” 3xx ์‘๋‹ต์˜ ๊ฒฐ๊ณผ์— Location ํ—ค๋”๊ฐ€ ์žˆ์œผ๋ฉด, Location ์œ„์น˜๋กœ ์ž๋™ ์ด๋™

๐Ÿš€Redirection ์ข…๋ฅ˜ 3๊ฐ€์ง€

๐Ÿ’ป1. ์˜๊ตฌ ๋ฆฌ๋‹ค์ด๋ ‰์…˜

  • ํŠน์ • ๋ฆฌ์†Œ์Šค์˜ URI๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ์ด๋™
  • ์›๋ž˜์˜ URL์„ ์‚ฌ์šฉโŒ, ๊ฒ€์ƒ‰ ์—”์ง„ ๋“ฑ์—์„œ๋„ ๋ณ€๊ฒฝ ์ธ์ง€
  • HTTP ์ƒํƒœ ์ฝ”๋“œ
    1. 301 Moved Permanently
      • ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ์‹œ ์š”์ฒญ ๋ฉ”์„œ๋“œ๊ฐ€ GET์œผ๋กœ ๋ณ€ํ•˜๊ณ , ๋ณธ๋ฌธ์ด ์ œ๊ฑฐ๋  ์ˆ˜ ์žˆ์Œ
    2. 308 Permanent Redirect
      • 301๊ณผ ๊ธฐ๋Šฅ ๋™์ผ
      • ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ์‹œ ์š”์ฒญ ๋ฉ”์„œ๋“œ์™€ ๋ณธ๋ฌธ ์œ ์ง€
  • ie) /members โ†’ /users
  • ie) /event โ†’ /new-event

๐Ÿ’ป2. ์ผ์‹œ ๋ฆฌ๋‹ค์ด๋ ‰์…˜

์ผ์‹œ์ ์ธ ๋ณ€๊ฒฝ

  • ๋ฆฌ์†Œ์Šค์˜ URI๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ ๋ณ€๊ฒฝ
  • ๊ฒ€์ƒ‰ ์—”์ง„ ๋“ฑ์—์„œ URL์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์•ˆ๋จ
  • HTTP ์ƒํƒœ ์ฝ”๋“œ
    1. 302 Found
      • ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ์‹œ ์š”์ฒญ ๋ฉ”์„œ๋“œ๊ฐ€ GET์œผ๋กœ ๋ณ€ํ•˜๊ณ , ๋ณธ๋ฌธ์ด ์ œ๊ฑฐ๋  ์ˆ˜ ์žˆ์Œ
    2. 307 Temporary Redirect
      • 302์™€ ๊ธฐ๋Šฅ ๋™์ผ
      • ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ์‹œ ์š”์ฒญ ๋ฉ”์„œ๋“œ์™€ ๋ณธ๋ฌธ ์œ ์ง€(์š”์ฒญ ๋ฉ”์„œ๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ์•ˆ๋œ๋‹ค)
    3. 303 See Other
      • 302์™€ ๊ธฐ๋Šฅ ๋™์ผ
      • ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ์‹œ ์š”์ฒญ ๋ฉ”์„œ๋“œ๊ฐ€ GET์œผ๋กœ ๋ณ€๊ฒฝ
  • PRG : Post/Redirect/Get
    • POST๋กœ ์ฃผ๋ฌธ ํ›„์— ์ƒˆ๋กœ ๊ณ ์นจ์œผ๋กœ ์ธํ•œ ์ค‘๋ณต ์ฃผ๋ฌธ ๋ฐฉ์ง€
    • POST๋กœ ์ฃผ๋ฌธ ํ›„์— ์ฃผ๋ฌธ ๊ฒฐ๊ณผ ํ™”๋ฉด์„ GET ๋ฉ”์„œ๋“œ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
    • ์ƒˆ๋กœ๊ณ ์นจํ•ด๋„ ๊ฒฐ๊ณผ ํ™”๋ฉด์„ GET์œผ๋กœ ์กฐํšŒ
    • ์ค‘๋ณต ์ฃผ๋ฌธ ๋Œ€์‹  ๊ฒฐ๊ณผ ํ™”๋ฉด๋งŒ GET์œผ๋กœ ๋‹ค์‹œ ์š”์ฒญ
  • 302 ? 307 ? 303 ? ์–ด๋–ค ๊ฒƒ ์‚ฌ์šฉ?
    • 302 : GET์œผ๋กœ ๋ณ€๊ฒฝ ๋  ์ˆ˜ ์žˆ์Œ
    • 307 : ๋ฉ”์„œ๋“œ๊ฐ€ ๋ณ€ํ•˜๋ฉด ์•ˆ ๋จ
    • 303 : ๋ฉ”์„œ๋“œ๊ฐ€ GET์œผ๋กœ ๋ณ€๊ฒฝ
    • ์›์น™
      • 302 ์ŠคํŽ™์˜ ์˜๋„๋Š” HTTP ๋ฉ”์„œ๋“œ ์œ ์ง€, ํ—ˆ๋‚˜ ์›น ๋ธŒ๋ผ์šฐ์ € ๋Œ€๋ถ€๋ถ„ 302 ์ฝ”๋“œ์— ๋Œ€ํ•ด GET์œผ๋กœ ๋ณ€๊ฒฝ
      • ๋ชจํ˜ธํ•œ 302 ๋Œ€์‹  307, 303 ๋“ฑ์žฅ
    • ํ˜„์‹ค
      • ๊ตฌ์ฒด์ ์ธ 307, 303 ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๋‚˜ ๋งŽ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด 302 ๊ธฐ๋ณธ ์‚ฌ์šฉ
      • ์ž๋™ ๋ฆฌ๋‹ค์ด๋ ‰์…˜์‹œ GET์œผ๋กœ ๋ณ€ํ•ด๋„ ๋˜๋ฉด 302 ์‚ฌ์šฉํ•ด๋„ ํฐ ๋ฌธ์ œ โŒ

๐Ÿ’ป3. ํŠน์ˆ˜ ๋ฆฌ๋‹ค์ด๋ ‰์…˜

๊ฒฐ๊ณผ ๋Œ€์‹  ์บ์‹œ๋ฅผ ์‚ฌ์šฉ

  • HTTP ์ƒํƒœ ์ฝ”๋“œ
    1. 300 Multiple Choices
      • ์‚ฌ์šฉ โŒ
    2. 304 Not Modified
      • ์บ์‹œ๋ฅผ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ
      • ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ˆ˜์ •๋˜์ง€ ์•Š์•˜์Œ์„ ์•Œ๋ ค์คŒ. ๋”ฐ๋ผ์„œ ํด๋ผ์ด์–ธํŠธ๋Š” ๋กœ์ปฌ PC์— ์ €์žฅ๋œ ์บ์‹œ๋ฅผ ์žฌ์‚ฌ์šฉ(์บ์‹œ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ)
      • 304 ์‘๋‹ต์€ ์‘๋‹ต์— ๋ฉ”์‹œ์ง€ ๋ฐ”๋””๋ฅผ ํฌํ•จํ•˜๋ฉด โŒ (๋กœ์ปฌ ์บ์‹œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ)
      • ์กฐ๊ฑด๋ถ€ GET, HEAD ์š”์ฒญ์‹œ ์‚ฌ์šฉ

๐Ÿš€2.2.์ฐธ์กฐ