Http 상태 코드

JangUT·2025년 3월 19일

📌상태 코드란 ?

  • 클라이언트가 보낸 요청에 대한 처리 상태를 서버 응답에서 알려주는 기능이다.
  • 해당 요청이 성공했는지, 실패했는지에 대한 정보를 상태 코드로 알려준다.

📌HTTP 상태 코드의 5가지 분류

  • 1XX : 요청이 수신되어 처리 중임을 나타냅다.

-> 사실상 거의 사용되지는 않는다.

  • 2XX : 요청이 성공적으로 처리되었음을 나타냅다.

  • 3XX : 요청을 완료하기 위해 추가 작업이 필요함을 나타낸다.

  • 4XX : 클라이언트의 요청에 오류가 있음을 나타냅니다.

  • 5XX : 서버에서 오류가 발생하여 요청을 처리할 수 없음을 나타냅니다.

📌주요 HTTP 상태 코드

🌈1. 2xx (Successful)

  • 200 OK : 요청이 정상처리됨을 나타낸다.

  • 201 Created : 요청이 성공해서 새로운 리소스가 생성된다.

🌈2. 3xx (Redirection)

  • 웹 브라우저는 3xx 응답의 결과에 Location 헤더가 존재하면, Location 위치로 자동이동 한다.

  • 다음은 자동 리다이렉트 흐름을 나타낸 것이다.

리다이렉션 이해

  • 영구 리다이렉션 - 특정 리소의 URI가 영구적으로 이동

    • 예) /members -> /users
  • 일시 리다이렉션 - 일시적인 변경

    • 주문 완료 후 주문 내역 화면으로 이동
    • PRG : Post/Redirect/Get
  • 특수 리다이렉션

    	- 결과 대신 캐시를 이용한다.

영구적인 리다이렉션

  • 리소스의 URI가 영구적으로 이동한다.

  • 원래의 URL을 사용하지 않고, 변경된 Location으로 이동한다.

  • 301 Moved Permanently : 리소스의 URI가 영구적으로 이동하고 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음

  • 308 Permanent Redirect : 301과 기능은 같지만 리다이렉트시 요청 메서드와 본문을 유지한다.

일시적인 리다이렉션

  • 리소스의 URI가 일시적으로 변경

  • 따라서 검색 엔진 등에서 URL을 변경하면 안된다.

  • 302 Found : 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음

  • 307 Temporary Redirect : 리다이렉트시 요청 메서드와 본문 유지

  • 308 See Other : 리다이렉트시 요청 메서드가 GET으로 변경

  • PRG: Post/Redirect/Get

일시적인 리다이렉션 - 예시

  • POST로 주문후에 새로 고침으로 인한 중복을 방지한다.
  • 새로 고침은 재요청이므로 중복주문이 될 수 있다.
  • 새로고침해도 결과 화면을 GET으로 조회
  • 중복 주문 대신에 결과 화면만 GET으로 다시 요청

  • PRG 이후 리다이렉트
    • URL이 이미 POST -> GET 으로 리다이렉트 됨
    • 새로 고침 해도 GET으로 결과 화면만 조회

기타 리다이렉션

  • 304 Not Modified

    • 캐시를 목적으로 사용
    • 클라이언트에게 리소스가 수정되지 않았음을 알려준다.
    • 따라서 클라이언트는 로컬 PC에 저장된 캐시를 재사용한다.
    • 304 응답은 응답에 메세지 바디를 포함하면 안된다.
    • 조건부 GET, HEAD 요청시 사용

🌈3. 4xx (Client Error)

  • 클라이언트의 요청에 잘못된 문법등으로 서버가 요청을 수행할 수 없음

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

  • 400 Bad Request : 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음

  • 401 Unauthorized : 클라이언트가 해당 리소스에 대한 인증이 필요함

  • 403 Forbidden : 서버가 요청을 이해했지만 승인을

  • 404 Not Found : 요청 리소스를 찾을 수 없음

🌈4. 5xx (Server Error)

  • 500 Internal Server Error : 서버 문제로 오류 발생, 애매하면 500오류

  • 503 Serivce Unavailable : 서버가 일시적인 과부하 또는 예정된 작업으로 잠시 요청을 처리할 수 없음

profile
평범한 개발자

0개의 댓글