HTTP 상태 코드

  • 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능
  • 클라이언트가 인식할 수 없는 상태 코드를 서버가 반환하면, 상위 상태 코드로 해석해서 처리한다.
    • ex) 299 -> 2xx, 451 -> 4xx
  • 종류
    • 1xx(information) : 서버가 요청을 클라이언트에서 성공적으로 수신을 했고, 처리 중인 정보를 보낸다.
    • 2xx(Successful) : 서버가 요청을 정상 처리했음을 알린다.
    • 3xx(Redirection) : 요청을 완료하려면 추가 행동이 필요하다.
    • 4xx(Client Error) : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없다.
    • 5xx(Server Error) : 서버 오류, 서버가 클라이언트의 요청을 처리하지 못했다.

1xx(information)

  • 거의 사용하지 않는다.

2xx(Successful)

code reason phrase 설명
200 OK 성공
201 Created 요청을 처리해서 새로운 리소스가 생성됨
202 Accepted 요청이 접수되었으나, 처리가 완료되지 않음
204 No Content 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음

3xx(Redirection)

  • 웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, location 위치로 자동 이동한다.(리다이렉트)
code reason phrase 설명
300 Multiple Choices 요청에 대해서 하나 이상의 응답이 가능하며, 클라이언트는 그 중에 하나를 반드시 선택해야 한다.
301 Moved Permanently 리다이렉트 시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음(MAY)
302 Found 리다이렉트 시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음(MAY)
303 See Other 리다이렉트 시 요청 메서드가 GET으로 변경
304 Not Modified 클라이언트에게 리소스가 수정되지 않았음을 알려준다. 따라서 클라이언트는 로컬 PC에 저장된 캐시를 재사용한다.
307 Temporary Redirect 리다이렉스 시 요청 메서드와 본문  유지(요청 메서드를 변경하면 안된다. MUST NOT)
308 Permanent Redirect 리다이렉스 시 요청 메서드와 본문 유지(처음 POST 요청 시 리다이렉트도 POST 유지)

종류

  1. 영구 리다이렉션
    • 리소스의 URI가 영구적으로 이동
    • 원래의 URL을 사용하지 않기 때문에 검색 엔진 등에서 변경을 인지할 수 있다.
    • 301, 308
  2. 일시 리다이렉션 : 일시적인 변경
    • 리소스의 URI가 일시적으로 변경
    • PRG 시 사용
    • 302, 307, 303
      • 307, 303을 권장하지만, 302가 이미 상용화되었다.
  3. 특수 리다이렉션
    • 클라이언트에게 리소스가 수정되지 않았음을 알려준다. 따라서 캐시를 재사용한다.
    • 응답 시 메시지 바디를 포함하면 안된다.(로컬 캐시를 사용하기 때문)
    • 조건부 GET, HEAD 요청 시 사용
    • 304

PRG

  • Post / Redirect / Get
  • Post 요청 후 새로 고침으로 인한 중복 처리를 방지하기 위해 GET 메서드로 리다이렉트를 한다.
    • 새로고침 해도 결과 화면을 GET으로 조회

4xx(Client Error)

  • 오류의 원인이 클라이언트에게 있기 때문에 똑같은 재시도를 하더라도 실패한다.
code reason phrase 설명
400 Bad Request 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음. 요청 파라미터, API 스펙 미일치 등
401 Unauthorized 클라이언트가 해당 리소스에 대한 인증이 필요함
403 Forbidden 서버가 요청을 이해했지만, 승인을 거부함
404 Not Found 요청 리소스를 찾을 수 없음. 권한이 부족한 리소스에 접근할 때 해당 리소스를 숨기는 용도로도 사용

5xx(Server Error)

code reason phrase 설명
500 Internal Server Error 서버 문제로 오류 발생. 애매하면 500 오류
503 Service Unavailable 일시적인 과부하, 예정된 작업 등으로 인한 서비스 이용 불가

+ Recent posts