πŸ’» Computer Science

06. HTTP μ›Ή κΈ°λ³Έ 지식 - HTTP μƒνƒœμ½”λ“œ μ†Œκ°œ

μ• μ •μ“° 2021. 5. 4. 11:49

HTTP μƒνƒœμ½”λ“œλž€?

ν΄λΌμ΄μ–ΈνŠΈκ°€ 보낸 μš”μ²­μ˜ μ²˜λ¦¬κ°€ μƒνƒœλ₯Ό μ‘λ‹΅ν•΄μ£ΌλŠ” κΈ°λŠ₯

 

- 1xx (Informational) : μš”μ²­μ΄ μˆ˜μ‹ λ˜μ–΄ μ²˜λ¦¬μ€‘ ( 거의 μ‚¬μš©λ˜μ§€ μ•ŠμŒ )

 

- 2xx (Successful) : μš”μ²­ 정상 처리

  - 200 OK : κ²°κ³Όλ₯Ό μ •μƒμ μœΌλ‘œ 처리 ν–ˆλ‹€.

  - 201 Created : μš”μ²­ μ„±κ³΅ν•΄μ„œ μƒˆλ‘œμš΄ λ¦¬μ†ŒμŠ€κ°€ 생성됨 ( post μš”μ²­μ— λŒ€ν•œ μ‘λ‹΅μœΌλ‘œ Location 에 μƒμ„±λœ λ¦¬μ†ŒμŠ€μ˜ urlλ₯Ό μ‚½μž… )

  - 202 Accepted : μš”μ²­μ΄ μ ‘μˆ˜λ˜μ—ˆμœΌλ‚˜ μ²˜λ¦¬κ°€ μ™„λ£Œλ˜μ§€ μ•Šμ•˜μŒ -> 배치 처리 κ°™μ€κ³³μ—μ„œ μ‚¬μš© (μš”μ²­μ„ ν•˜κ³  λ‚˜μ€‘μ— ν•œλ²ˆμ— μ²˜λ¦¬ν•˜λŠ” 것)  

  - 204 No Content : μ„œλ²„κ°€ μš”μ²­μ„ μ„±κ³΅μ μœΌλ‘œ μˆ˜ν–‰ν–ˆμ§€λ§Œ, 응닡 νŽ˜μ΄λ‘œλ“œ 본문에 보낼 데이터가 없을 λ•Œ 2xx μ½”λ“œλ‘œ μ„±κ³΅λ§Œμ„ μΈμ‹ν•œλ‹€.

 

- 3xx (Redirection) : μš”μ²­μ„ μ™„λ£Œν•˜λ €λ©΄ μΆ”κ°€ 행동이 ν•„μš”

λ¦¬λ‹€μ΄λ ‰μ…˜μ΄ 뭘까?

μ›Ή λΈŒλΌμš°μ €λŠ” 3xx μ‘λ‹΅μ˜ 결과에 Location 헀더가 있으면, Location μœ„μΉ˜λ‘œ μžλ™ 이동 ν•œλ‹€. 

  - μš”μ²­μ„ μ™„λ£Œν•˜κΈ° μœ„ν•΄ μœ μ € μ—μ΄μ „νŠΈμ˜ μΆ”κ°€ μ‘°μΉ˜κ°€ ν•„μš”ν•œ 경우 

  - 300 Multiple Choices ( 거의 μ‚¬μš©λ˜μ§€ μ•ŠμŒ ) 

  - 301 Moved Permanaently -> Location: /new-event λ₯Ό λ„£μ–΄μ€˜μ„œ μƒˆλ‘œμš΄ μœ„μΉ˜λ‘œ μ΄λ™ν•œλ‹€

    예) ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­ -> μ„œλ²„(이 url은 301λ„€ Location : /new-event url둜 λ¦¬λ‹€μ΄λ ‰μ…˜ γ„±)

                                                              -> ν΄λΌμ΄μ–ΈνŠΈ (γ…‡γ…‹ λ‹€μ‹œ μš”μ²­) -> μ„œλ²„( 200 OK )

     - 영ꡬ λ¦¬λ‹€μ΄λ ‰μ…˜ - νŠΉμ • λ¦¬μ†ŒμŠ€μ˜ URIκ°€ 영ꡬ적으둜 이동

        301(Moved Permanaently), 308 ( Permanaent Redirect ) μ›λž˜μ˜ URL을 μ‚¬μš©ν•˜μ§€ μ•ŠμŒ, 검색 엔진 λ“±μ—μ„œλ„ λ³€κ²½ 인지.

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

        308은 λ¦¬λ‹€μ΄λ ‰νŠΈμ‹œ μš”μ²­ λ©”μ„œλ“œμ™€ λ³Έλ¬Έ μœ μ§€ ( 301이 본문을 μ œκ±°ν•˜λŠ” 문제λ₯Ό ν•΄κ²° ν•΄μ€Œ ) -> ν•˜μ§€λ§Œ 보톡 301을 μ“΄λ‹€

 

     - μΌμ‹œ λ¦¬λ‹€μ΄λ ‰μ…˜ - μΌμ‹œμ μΈ λ³€κ²½ -> μ£Όλ¬Έ μ™„λ£Œ ν›„ μ£Όλ¬Έ λ‚΄μ—­ν™”λ©΄μœΌλ‘œ 이동

        μΌμ‹œμ μœΌλ‘œ λ³€κ²½λ˜κΈ° λ•Œλ¬Έμ— 검색 엔진 λ“±μ—μ„œ URL을 λ³€κ²½ν•˜λ©΄ μ•ˆλœλ‹€. 

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

        307 (Temprary Redirect): λ¦¬λ‹€μ΄λ ‰νŠΈμ‹œ μš”μ²­ λ©”μ„œλ“œμ™€ λ³Έλ¬Έ μœ μ§€ ( μš”μ²­ λ©”μ„œλ“œλ₯Ό λ³€κ²½ν•˜λ©΄ μ•ˆλœλ‹€.)

        303 (See Other): λ¦¬λ‹€μ΄λ ‰νŠΈμ‹œ μš”μ²­ λ©”μ„œλ“œκ°€ GET으둜 λ³€κ²½

 

μΌμ‹œμ  λ¦¬λ‹€μ΄λ ‰μ…˜μ€ μ–΄λ””μ„œ μ‚¬μš©λ κΉŒ?

POST둜 주문을 ν–ˆμ„ λ•Œ λΈŒλΌμš°μ €κ°€ μƒˆλ‘œκ³ μΉ¨μ΄ 되면 POSTκ°€ ν•œλ²ˆ 더 μš”μ²­ 될 수 μžˆλ‹€. -> 쀑볡 주문이 될 수 μžˆλ‹€.

--> POST둜 주문후에 μ£Όλ¬Έ κ²°κ³Ό 화면을 GET λ©”μ„œλ“œλ‘œ λ¦¬λ‹€μ΄λ ‰νŠΈ ν•˜κ²Œ 되면 μƒˆλ‘œκ³ μΉ¨ν•΄λ„ 결과화면을 GET으둜 μ‘°νšŒν•œλ‹€.

 

λΉ„μŠ·ν•œ κΈ°λŠ₯이 λ§Žμ€λ° μ–΄λ–€κ±Έ μ¨μ•Όν• κΉŒ?

302 HTTP μŠ€νŽ™μ˜ μ˜λ„λŠ” HTTP λ©”μ„œλ“œλ₯Ό μœ μ§€ν•˜λŠ” κ²ƒμ΄λ‚˜ λΈŒλΌμš°μ €λ“€μ΄ GET으둜 바꿔버리고 μΌλΆ€λŠ” λ‹€λ₯΄κ²Œ λ™μž‘ν•˜κΈ° λ•Œλ¬Έμ— λͺ…ν™•ν•œ 307, 303이 λ“±μž₯ν–ˆμ§€λ§Œ ν˜„μ‹€μ μœΌλ‘œ 이미 λ§Žμ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ΄ 302λ₯Ό κΈ°λ³Έκ°’μœΌλ‘œ μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— GET λ©”μ„œλ“œκ°€ λ³€ν•˜λŠ”κ²Œ 상관이 μ—†μœΌλ©΄ 302λ₯Ό μ‚¬μš©ν•΄λ„ λ¬Έμ œκ°€ μ—†λ‹€.

 

     - 특수 λ¦¬λ‹€μ΄λ ‰μ…˜ - κ²°κ³Ό λŒ€μ‹  μΊμ‹œλ₯Ό μ‚¬μš© -> ν΄λΌμ΄μ–ΈνŠΈμ˜ μΊμ‹œκ°€ λ§Œλ£Œλ˜μ–΄ μ„œλ²„μ—κ²Œ μΊμ‹œ 확인 μš”μ²­ ν•΄μ€Œ

         - 304 Not Modified 

         μΊμ‹œλ₯Ό λͺ©μ μœΌλ‘œ μ‚¬μš©

         ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ λ¦¬μ†ŒμŠ€κ°€ μˆ˜μ •λ˜μ§€ μ•Šμ•˜μŒμ„ μ•Œλ €μ€€λ‹€. ν΄λΌμ΄μ–ΈνŠΈλŠ” 둜컬PC에 μ €μž₯된 μΊμ‹œλ₯Ό μž¬μ‚¬μš©! -> μΊμ‹œλ‘œ λ¦¬λ‹€μ΄λ ‰νŠΈ ν•œλ‹€.

         λ‘œμ»¬ μΊμ‹œλ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— 응닡 λ°”λ””λ₯Ό ν¬ν•¨ν•˜λ©΄ μ•ˆλœλ‹€.

         μ‘°κ±΄λΆ€ GET, HEAD μš”μ²­μ‹œ μ‚¬μš©ν•œλ‹€.

     μ˜ˆλ₯Όλ“€μ–΄

     ν΄λΌμ΄μ–ΈνŠΈκ°€ μžμ‹ μ˜ 파일의 μˆ˜μ •μ •λ³΄λ₯Ό μ£Όλ©΄μ„œ λ³€κ²½λ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜λ €κ³  μ„œλ²„μ—κ²Œ μš”μ²­ν•œλ‹€.

     μ„œλ²„λŠ” ν•΄λ‹Ή 파일의 μˆ˜μ •μ •λ³΄κ°€ λ³€κ²½λ˜μ§€ μ•Šμ•˜μŒμ„ κ°μ§€ν•˜κ³  304 μ½”λ“œλ₯Ό λ³΄λ‚΄μ„œ ν΄λΌμ΄μ–ΈνŠΈκ°€ ν•΄λ‹Ή νŒŒμΌμ„ κ·ΈλŒ€λ‘œ μ‚¬μš©ν•  수 있게 ν•œλ‹€.

 

 

 

 

- 4xx (Client Error) : ν΄λΌμ΄μ–ΈνŠΈ 였λ₯˜, 잘λͺ»λœ λ¬Έλ²•λ“±μœΌλ‘œ μ„œλ²„κ°€ μš”μ²­ μˆ˜ν–‰ν•  수 μ—†μŒ

μ€‘μš”ν•œκ²ƒμ€ ν΄λΌμ΄μ–ΈνŠΈκ°€ 이미 잘λͺ»λœ μš”μ²­, 데이터λ₯Ό 보내고 있기 λ•Œλ¬Έμ— μž¬μ‹œλ„ 해도 μ‹€νŒ¨

μš”μ²­ ꡬ문, λ©”μ‹œμ§€ λ“±λ“± 였λ₯˜μ΄κΈ° λ•Œλ¬Έμ— μš”μ²­ λ‚΄μš© κ²€ν† ν•˜κ³  보내야 ν•œλ‹€. μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈμ˜ μ‹€μˆ˜λ₯Ό μ•Œμˆ˜ μžˆλ„λ‘ 쑰건검사λ₯Ό μ² μ €ν•˜κ²Œ ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€.

 

- 401 Unauthorized

ν΄λΌμ΄μ–ΈνŠΈκ°€ ν•΄λ‹Ή λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ 인증이 ν•„μš”ν•  λ•Œ

이 였λ₯˜κ°€ λ°œμƒμ‹œ 응닡에 WWW_Authenticate 헀더와 ν•¨κ»˜ 인증 방법을 μ„€λͺ…ν•΄μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€.

 

인증(Authentication) : 본인이 λˆ„κ΅¬μΈμ§€ 확인, (둜그인)

인가(Authorization) : κΆŒν•œλΆ€μ—¬ (ADMIN κΆŒν•œμ²˜λŸΌ νŠΉμ • λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•  수 μžˆλŠ” κΆŒν•œ, 인증이 μžˆμ–΄μ•Ό 인가가 있음)

 

-> 였λ₯˜ λ©”μ‹œμ§€κ°€ Unauthorized μ΄μ§€λ§Œ 인증 λ˜μ§€ μ•ŠμŒμ΄λΌκ³  μ΄ν•΄ν•˜λ©΄ λ©λ‹ˆλ‹€!

 

- 403 Forbiden

μ„œλ²„κ°€ μš”μ²­μ„ μ΄ν•΄ν–ˆμ§€λ§Œ μŠΉμΈμ„ 거뢀함

주둜 인증 자격 증λͺ…은 μžˆμ§€λ§Œ, μ ‘κ·Ό κΆŒν•œμ΄ λΆˆμΆ©λΆ„ν•œ 경우

 

- 404 Not Found

μš”μ²­ λ¦¬μ†ŒμŠ€λ₯Ό 찾을 수 μ—†μŒ

ν•΄λ‹Ή μš”μ²­ λ¦¬μ†ŒμŠ€κ°€ μ„œλ²„μ— μ—†κ±°λ‚˜ ν΄λΌμ΄μ–ΈνŠΈκ°€ κΆŒν•œμ΄ λΆ€μ‘±ν•œ λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•  λ•Œ ν•΄λ‹Ή λ¦¬μ†ŒμŠ€λ₯Ό 숨기고 싢을 λ•Œ

 

- 5xx (Server Error) : μ„œλ²„ 였λ₯˜, 정상 μš”μ²­ μ²˜λ¦¬ν•˜μ§€ λͺ»ν•¨.

μ„œλ²„ 였λ₯˜

μ„œλ²„ 문제둜 였λ₯˜ λ°œμƒ

 

500 Internal Server Error

μ„œλ²„ 문제둜 였λ₯˜ λ°œμƒ, μ• λ§€ν•˜λ©΄ 500 였λ₯˜

μ„œλ²„μ—μ„œ μž„μ˜λ‘œ μƒμ„±ν•˜λ©΄ 쒋지 λͺ»ν•˜λ‹€,, μ™œλƒν•˜λ©΄ μ„œλ²„μ—μ„œ μ§„μ§œ λ¬Έμ œκ°€ μžˆμ„ λ•Œ 났닀고 λͺ¨λ‹ˆν„°λ§ν•΄μ•Ό ν•œλ‹€.

 

503 Service Unavailable

μ„œλΉ„μŠ€ 이용 λΆˆκ°€

μ„œλ²„κ°€ μΌμ‹œμ μΈ κ³ΌλΆ€ν™”, μ˜ˆμ •λœ μž‘μ—…μœΌλ‘œ μž μ‹œ μš”μ²­μ„ μ²˜λ¦¬ν•  수 μ—†μŒ

μ–Όλ§ˆλ’€μ— λ³΅κ΅¬λ˜λŠ”μ§€ 보낼 μˆ˜λ„ 있음 

 

ν΄λΌμ΄μ–ΈνŠΈκ°€ 인식할 수 μ—†λŠ” μƒνƒœμ½”λ“œλ₯Ό μ„œλ²„κ°€ λ°˜ν™˜ν•œλ‹€λ©΄ μ–΄λ–»κ²Œ 될까?

ν΄λΌμ΄μ–ΈνŠΈλŠ” μƒμœ„ μƒνƒœμ½”λ“œλ‘œ ν•΄μ„ν•΄μ„œ μ²˜λ¦¬ν•˜λ©΄ λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ 233 μ΄λΌλŠ” μƒνƒœλͺ¨λ“œκ°€ μ˜¨λ‹€ν•΄λ„ 2xx μ΄λ―€λ‘œ μš”μ²­μ΄ 정상 처리 λ˜μ—ˆκ΅¬λ‚˜ ν•˜λ©΄ λ©λ‹ˆλ‹€!

 

 

 

 

λ°˜μ‘ν˜•