Skip to main content Link Menu Expand (external link) Document Search Copy Copied

HTTP 상태 코드

Table of contents

  1. 1xx (informational)
  2. 2xx (Successful)
  3. 3xx (Redirection)
    1. 301 · 308 (영구적인 리다이렉션)
    2. 302 · 307 · 303 (일시적인 리다이렉션)
  4. 4xx (Client Error)
  5. 5xx (Server Error)


1xx (informational)


  • 요청이 수신되어 처리 중
  • 실무에서도 거의 사용하지 않는 코드


2xx (Successful)


  • 200 OK : 요청을 정상적으로 수행했을 때

  • 201 Created: 요청을 수행해서 새로운 리소스(자원)가 생성될 때

  • 202 Accepted : 요청이 접수 되었지만, 처리가 완료되지 않았을 때

  • 204 No Content : 서버가 요청을 수행했지만, 본문에 보낼 데이터가 없을 경우 (ex. 웹 문서 편집기의 save 버튼 처럼, save 버튼을 눌러도 같은 화면을 유지해야 할 때)

    -> 결과 내용이 없어도 204 메세지 만으로 요청 성공을 확인할 수 있다.



3xx (Redirection)


-> 웹 브라우저는 3xx 응답 결과에 Location 헤더가 있으면, Location 위치로 자동 이동

(ex. 이미 사용하고 있던 url을 바꿔야 하는 경우, 북마크 해두었던 사용자들을 문제 없이 새로운 페이지로 이동시켜줄 수 있다.)

301 · 308 (영구적인 리다이렉션)

  • 리소스의 URI가 영구적으로 이동
  • 원래의 URL을 사용하지 않는다.
  • 실무에서는 어차피 url이 변경되면, body도 새로 입력받아야 하는 경우가 많기 때문에, 보통 301을 많이 사용한다.
  • 301의 경우 post 사용 시, body부를 제거해버리고, 새로운 URL로 리다이랙션한다.

  • 308은 post body부를 유지시킨다.

302 · 307 · 303 (일시적인 리다이렉션)

  • 리소스의 URI가 일시적으로 변경
  • 따라서, 검색 엔진 등에서 URL을 변경하면 안된다.
  • 302는 301과 비슷한 역할을 수행한다. 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있다.
  • 307은 302와 기능이 같지만, 요청 메서드와 본문을 유지한다.
  • 303은 302와 기능이 같고, 확실하게 요청 메서드를 GET으로 변경시킨다.
  • GET으로 요청메서드를 바꿔줌으로서, POST 요청이 사용자에게 계속 남겨져서, 새로고침으로 인한 중복 POST 문제를 방지할 수 있다.


4xx (Client Error)

  • 오류의 원인이 클라이언트에 있는 경우 사용
  • 클라이언트의 요청이 정상적으로 바뀌지 않는 한, 같은 에러가 계속 발생할 수 있다.
  • 서버에서 문제가 없다는 사실을 클라이언트에게 정확히 알려줄 수 있다.
  • 404는 요청 리소스가 서버에 없거나, 클라이언트가 권한이 부족한 리소스에 접근할 때 사용


5xx (Server Error)

  • 오류의 원인이 서버에 있는 경우 사용

    • 500은 서버 내부 문제로 오류 발생 시
    • 503은 일시적인 과부하 또는 예정된 작업으로 요청 처리할 수 없을 때 사용