HTTP 웹 HTTP 상태 코드

신재원·2023년 1월 19일
2

HTTP

목록 보기
8/18

HTTP 상태 코드

클라이언트가 보낸 요청의 처리 상태를 "응답"(Response)에서 알려주는 기능

1. 1XX (Informational)

: 요청이 수신되어 처리중 (거의 사용 X)

2. 2XX (Successful)

: 요청 정상 처리

  • 200 : OK
  • 201 : Created
  • 202 : Accepted
  • 204 : No Content

3. 3XX (Redirection)

: 요청을 완료하려면 클라이언트 프로그램의 추가 행동이 필요

  • 리다이렉션 이해
    • 웹 브라우저는 3XX 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동 (리다이렉트)

영구 리다이렉션 (301, 308) (잘사용 X)

  • 리소스의 URI가 영구적으로 이동
  • 원래의 URL를 사용 X
  • 301 Moved Permanently
    • 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될수있음
  • 308 Permanent Redirect
    • 301과 기능은 같음
    • 리다이렉트시 요청 메서드와 본문 유지 (처음 Post를 보내면 리다이렉트도 보냄)

일시적인 리다이렉션

  • 리소스의 URI가 일시적으로 변경
  • 따라서 검색 엔진 등에서 URL을 변경하면 안됨
  • 302 (!! 중요 307, 303 보다 많이 쓰임 )
    • 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될수있음(MAY)
  • 307
    • 302와 기능은 같음
    • 리다이렉트시 요청 메서드와 본문 유지 (요청 메서드를 변경하면 안된다)
  • 303
    • 302와 기능은 같음
    • 리다이렉트시 요청 메서드가 GET으로 변경

일시적인 리다이렉션 (POST/Redirect/GET) - 예시

  • POST로 주문후에 웹 브라우저를 새로고침하면 ?
  • 새로고침은 다시 요청
  • 중복 주문이 될 수 있다.
  • PRG 이후 리다이렉트
    • URL이 이미 POST -> GET으로 리다이렉트 됨
    • 새로 고침해도 GET으로 결과 화면만 조회
  • 304
    • NOT Modified
    • 캐시를 목적으로 사용
    • 클라이언트에게 리소스가 수정되지 않았음을 알려준다, 로컬 PC에 저장된 캐시를 사용 (캐시로 리다이렉트 한다.)
    • 304 응답은 응답에 메시지 바디를 포함하면 안된다.

4. 4XX (Client Error)

: 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할수 없음

  • 오류의 원인이 "클라이언트"에 있음

  • 중요 !! 클라이언트가 이미 잘못된 요청, 데이터를 보내고 있기 때문에, 똑같은 재시도가 실패함

  • 401 Unauthorized

    • 클라이언트가 해당 리소스에 대한 인증이 필요함
    • 인증 되지않음
    • 참고
      • 인증 : 본인이 누구인지 확인, (로그인)
      • 인가 : 권한 부여, Admin

5. 5XX (Server Error)

: 서버 오류, 서버가 정상 요청을 처리하지못함 (!! 비즈니스 로직에서 오류를 내면안됨, 진짜 서버에 문제가 있을경우 5XX 에러)

  • 서버에 문제가 있기 때문에 재시도 하면 성공할수도 있음(복구가 되거나 등등)

만약 모르는 상태 코드가 나타나면 ?

  • 클라이언트는 상위 상태코드로 해석해서 처리
  • 미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경하지않아도됨
  • 예 )
    • 299 ? - > 2XX (Successful)
    • 451 ? - > 4XX (Client Error)
    • 589 ? - > 5XX (Server Error)

0개의 댓글