HTTP

[HTTP μ›Ή κΈ°λ³Έ 지식] HTTP μƒνƒœμ½”λ“œ

yeonii 2023. 12. 9. 13:01

🌱 HTTP μƒνƒœμ½”λ“œ μ†Œκ°œ

μƒνƒœμ½”λ“œ: ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„λ‘œ μš”μ²­μ„ λ³΄λƒˆμ„ λ•Œ, μš”μ²­μ˜ 처리 μƒνƒœλ₯Ό μ‘λ‹΅ν•΄μ£ΌλŠ” κΈ°λŠ₯

πŸ‘‰ 1xx (Informational): μš”μ²­μ΄ μˆ˜μ‹ λ˜μ–΄ μ²˜λ¦¬μ€‘ ➑️ 거의 μ‚¬μš©λ˜μ§€ X
    2xx (Successful): μš”μ²­ 정상 처리
    3xx (Redirection): μš”μ²­μ„ μ™„λ£Œν•˜λ €λ©΄ μΆ”κ°€ 행동 ν•„μš”
    4xx (Client Error): ν΄λΌμ΄μ–ΈνŠΈ 였λ₯˜, 잘λͺ»λœ 문법 λ“±μœΌλ‘œ μ„œλ²„κ°€ μš”μ²­μ„ μˆ˜ν–‰ν•  수 μ—†μŒ
    5xx (Server Error): μ„œλ²„ 였λ₯˜, μ„œλ²„κ°€ 정상 μš”μ²­μ„ μ²˜λ¦¬ν•˜μ§€ λͺ»ν•¨

 


🌱 2xx - 성곡

200 OK

  • ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ΄ μ •μƒμ μœΌλ‘œ μ²˜λ¦¬λ˜μ—ˆμŒμ„ μ•Œλ¦¬λŠ” μƒνƒœμ½”λ“œ

201 Created

  • POST둜 μš”μ²­μ„ 보내면 λ¦¬μ†ŒμŠ€ URIλ₯Ό μ„œλ²„μ—μ„œ μƒμ„±ν•˜λŠ” μƒνƒœμ½”λ“œ
  • HTTP Header Location에 μƒμ„±λœ λ¦¬μ†ŒμŠ€μ˜ URI μž‘μ„±

202 Accepted

  • μš”μ²­μ΄ μ ‘μˆ˜ λ˜μ—ˆμœΌλ‚˜ μ²˜λ¦¬κ°€ μ™„λ£Œλ˜μ§€ μ•Šμ€ μƒνƒœμ½”λ“œ
  • 잘 μ‚¬μš©ν•˜μ§€ X

204 No Content

  • μ„œλ²„κ°€ μš”μ²­μ„ μ„±κ³΅μ μœΌλ‘œ μˆ˜ν–‰ ν–ˆμ§€λ§Œ 응닡 νŽ˜μ΄λ‘œλ“œ 본문에 데이터가 μ—†λŠ” μƒνƒœμ½”λ“œ

 


🌱 3xx - λ¦¬λ‹€μ΄λ ‰μ…˜

3xx (Redirection): μš”μ²­μ„ μ™„λ£Œν•˜κΈ° μœ„ν•΄ μœ μ € μ—μ΄μ „νŠΈμ˜ μΆ”κ°€ 쑰치 ν•„μš”

πŸ‘‰ 300: Multiple Choices
    301: Moved Permanently
    302: Found
    303: See Other
    304: Not Modified
    307: Temporary Redirect
    308: Permanent Redirect

 

λ¦¬λ‹€μ΄λ ‰μ…˜μ˜ 이해

 

λ¦¬λ‹€μ΄λ ‰μ…˜μ˜ μ’…λ₯˜

  1. 영ꡬ λ¦¬λ‹€μ΄λ ‰μ…˜: νŠΉμ • λ¦¬μ†ŒμŠ€μ˜ URIκ°€ 영ꡬ적으둜 이동
    • /members ➑️ /users
    • /event ➑️ /new-event
  2. μΌμ‹œ λ¦¬λ‹€μ΄λ ‰μ…˜: μΌμ‹œμ μΈ λ³€κ²½
    • RPG: Post/Redirect/Get
  3. 특수 λ¦¬λ‹€μ΄λ ‰μ…˜: κ²°κ³Ό λŒ€μ‹  μΊμ‹œ μ‚¬μš©

 

영ꡬ λ¦¬λ‹€μ΄λ ‰μ…˜

  • λ¦¬μ†ŒμŠ€μ˜ URIκ°€ 영ꡬ적으둜 이동
  • μ›λž˜μ˜ URI μ‚¬μš© X, 검색 엔진 λ“±μ—μ„œλ„ λ³€κ²½ 인지
  • 예) /members -> /users, /event -> /new-event

301 Moved Permanently

  • λ¦¬λ‹€μ΄λ ‰νŠΈμ‹œ μš”μ²­ λ©”μ„œλ“œκ°€ GET으둜 λ³€ν•˜κ³ , 본문이 제거될 수 있음

308 Permanent Redirect

  • 301κ³Ό κΈ°λŠ₯은 κ°™μŒ
  • λ¦¬λ‹€μ΄λ ‰νŠΈμ‹œ μš”μ²­ λ©”μ„œλ“œμ™€ λ³Έλ¬Έ μœ μ§€

 

μΌμ‹œ λ¦¬λ‹€μ΄λ ‰μ…˜

  • λ¦¬μ†ŒμŠ€μ˜ URIκ°€ μΌμ‹œμ μœΌλ‘œ λ³€κ²½
  • λ”°λΌμ„œ 검색 엔진 λ“±μ—μ„œ URL을 λ³€κ²½ν•˜λ©΄ μ•ˆλ¨
  • PRG(Post/Redirect/Get)

302 Found

  • λ¦¬λ‹€μ΄λ ‰νŠΈμ‹œ μš”μ²­ λ©”μ„œλ“œκ°€ GET으둜 λ³€ν•˜κ³ , 본문이 제거될 수 있음

307 Temporary Redirect

  • 302와 κΈ°λŠ₯은 κ°™μŒ
  • λ¦¬λ‹€μ΄λ ‰νŠΈμ‹œ μš”μ²­ λ©”μ„œλ“œμ™€ λ³Έλ¬Έ μœ μ§€(μš”μ²­ λ©”μ„œλ“œλ₯Ό λ³€κ²½ν•˜λ©΄ μ•ˆλ¨)

303 See Other

  • 302와 κΈ°λŠ₯은 κ°™μŒ
  • λ¦¬λ‹€μ΄λ ‰νŠΈμ‹œ μš”μ²­ λ©”μ„œλ“œκ°€ GET으둜 λ³€κ²½

PRG (Post/Redirect/Get)

μ˜ˆμ‹œ - POST둜 μ£Όλ¬Έ 후에 μ›Ή λΈŒλΌμš°μ €λ₯Ό μƒˆλ‘œκ³ μΉ¨ν•˜λ©΄?

            → μƒˆλ‘œκ³ μΉ¨μ€ λ‹€μ‹œ μš”μ²­

            → 쀑볡 주문이 될 수 있음

  • POST둜 μ£Όλ¬Έ 후에 μƒˆλ‘œ 고침으둜 μΈν•œ 쀑볡 μ£Όλ¬Έ 방지
  • POST둜 μ£Όλ¬Έ 후에 μ£Όλ¬Έ κ²°κ³Ό 화면을 GET λ©”μ„œλ“œλ‘œ λ¦¬λ‹€μ΄λ ‰νŠΈ
  • μƒˆλ‘œκ³ μΉ¨ν•΄λ„ κ²°κ³Ό 화면을 GET으둜 쑰회
  • 쀑볡 μ£Όλ¬Έ λŒ€μ‹ μ— κ²°κ³Ό ν™”λ©΄λ§Œ GET으둜 λ‹€μ‹œ μš”μ²­

 

  1. RPG μ‚¬μš© μ „

2. RPG μ‚¬μš© ν›„

 

 

302, 307, 303 κ·Έλž˜μ„œ 뭘 써야 ν•˜λ‚˜μš”?

 πŸ‘‰ 302 Found: Get으둜 λ³€ν•  수 있음
      307 Temporary Redirect: λ©”μ„œλ“œκ°€ λ³€ν•˜λ©΄ μ•ˆλ¨
      303 See Other: GET으둜 변경함

 

특수 λ¦¬λ‹€μ΄λ ‰μ…˜

300 Multiple Choice

304 Not Modified

 


🌱 4xx - ν΄λΌμ΄μ–ΈνŠΈ 였λ₯˜

4xx (Client Error)

  • ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ— 잘λͺ»λœ 문법 λ“±μœΌλ‘œ μ„œλ²„κ°€ μš”μ²­μ„ μˆ˜ν–‰ν•  수 μ—†λŠ” μƒνƒœμ½”λ“œ
  • ν΄λΌμ΄μ–ΈνŠΈκ°€ 잘λͺ»λœ μš”μ²­μ„ 보내고 μžˆλŠ” 것.

400 Bad Request

  • ν΄λΌμ΄μ–ΈνŠΈκ°€ 잘λͺ»λœ μš”μ²­μ„ ν•˜κ³  있기 λ•Œλ¬Έμ— λ°œμƒν•˜λŠ” μƒνƒœμ½”λ“œ
  • μš”μ²­ ꡬ문, λ©”μ‹œμ§€ λ“±μ˜ 였λ₯˜ → μš”μ²­ λ‚΄μš© κ²€ν†  ν•„μš”

401 Unauthorized

  • ν΄λΌμ΄μ–ΈνŠΈλŠ” ν•΄λ‹Ή λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ 인증 ν•„μš”λ₯Ό μ•Œλ¦¬λŠ” μƒνƒœμ½”λ“œ
πŸ‘‰ 인증(Authentication): 본인이 λˆ„κ΅¬μΈμ§€ ν™•μΈν•˜λŠ” κ³Όμ •
     인가(Authorization): νŠΉμ • λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•  수 μžˆλŠ” κΆŒν•œμ΄ μžˆλŠ” μ‚¬λžŒλ§Œ λ³Ό 수 μžˆλŠ” κΆŒν•œ

403 Forbidden

  • μ„œλ²„κ°€ μš”μ²­μ„ μ΄ν•΄ν–ˆμ§€λ§Œ κΆŒν•œμœΌλ‘œ 인해 κ±°λΆ€ν•˜λŠ” μƒνƒœμ½”λ“œ
  • ex) 인증 자격 증λͺ…은 μžˆμ§€λ§Œ μ ‘κ·Ό κΆŒν•œμ΄ μ—†λŠ” 경우, μ–΄λ“œλ―Ό 등급이 μ•„λ‹Œ μ‚¬μš©μžκ°€ λ‹€λ₯Έ λ¦¬μ†ŒμŠ€λ‘œ λ‘œκ·ΈμΈμ€ ν–ˆμ§€λ§Œ μ–΄λ“œλ―Ό λ“±κΈ‰μ˜ λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•˜λŠ” 경우 λ“±

404 Not Found

  • μš”μ²­ λ¦¬μ†ŒμŠ€λ₯Ό 찾을 수 μ—†λŠ” μƒνƒœμ½”λ“œ

🌱 5xx - μ„œλ²„ 였λ₯˜

5xx (Server Error)

  • μ„œλ²„ 문제둜 였λ₯˜ λ°œμƒ
  • μ„œλ²„μ— λ¬Έμ œκ°€ 있기 λ•Œλ¬Έμ— μž¬μ‹œλ„ ν•˜λ©΄ λ³΅κ΅¬ν•˜κ±°λ‚˜ 성곡할 수 있음

500 Internal Server Error

  • μ„œλ²„ λ‚΄λΆ€ 문제둜 였λ₯˜κ°€ λ°œμƒν•œ μƒνƒœμ½”λ“œ

503 Service Unvailable

  • μ„œλ²„κ°€ μΌμ‹œμ μœΌλ‘œ κ³ΌλΆ€ν•˜κ°€ λ˜κ±°λ‚˜ μ˜ˆμ •λœ μž‘μ—…μœΌλ‘œ μž μ‹œ μš”μ²­μ„ μ²˜λ¦¬ν•  수 μ—†λ‹€λŠ” μƒνƒœμ½”λ“œ
  • Retry-After ν—€λ”λ‘œ μ–Όλ§ˆ 뒀에 λ³΅κ΅¬λ˜λŠ”μ§€ μ˜ˆμƒ μ‹œκ°„μ„ λ³Ό 수 있음