HTTP 상태코드
HTTP 상태코드는 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능으로 5개의 클래스(분류)로 구분된다.
- 1xx(정보): 요청을 받았으며 프로세스를 계속한다
- 2xx(성공): 요청을 성공적으로 받았으며 인식했고 수용하였다
- 3xx(리다이렉션): 요청 완료를 위해 추가 작업 조치가 필요하다
- 4xx(클라이언트 오류): 요청의 문법이 잘못되었거나 요청을 처리할 수 없다
- 5xx(서버 오류): 서버가 명백히 유효한 요청에 대해 충족을 실패했다
2xx
클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다.
- 200(성공): 서버가 요청을 제대로 처리함
- 201(작성됨): 성공적으로 요청되었으며 서버가 새 리소스를 작성
- 202(허용됨): 서버가 요청을 접수했지만 아직 처리하지 않음
- 배치 처리 같은 곳에서 사용
- 204(콘텐츠 없음): 서버가 요청을 성공적으로 처리했지만 콘텐츠를 제공하지 않음
- 예시: 웹 문서 편집기에서 save 버튼을 누렀을 경우, 결과로 아무 내용이 없어도 된다.
3xx
클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.
- 300(여러 선택항목): 서버가 요청에 따라 여러 조치를 선택할 수 있음
- 301(영구 이동): 요청한 페이지를 새 위치로 영구적으로 이동
- 페이지가 영구적으로 변경된 경우, 301과 308은 검색 엔진 등에서도 변경 인지
- 301은 리다이렉트 시 요청 메서드가 GET으로 변하고, 분문이 제거 될 수 있다, 308은 301과 기능은 같지만 처음 요청 그대로 요청을 보내고 본문을 유지한다.
- 302(임시 이동): 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용
- 리다이렉트 시 요청 메서드가 GET으로 변하고, 본문이 제거 될 수 있음
- 307은 302와 기능은 같지만 요청 메서드와 본문을 유지한다
- 303(기타 위치 보기): 요청자가 다른 위치에 별도의 GET 요청을 하여 응답을 검색할 경우 서버는 이 코드를 표시
- 302와 기능이 같고 리다이렉트 시 요청 메서드가 GET으로 변경(302도 대부분 GET으로 변경된다)
- 304(수정되지 않음): 마지막 요청 이후 요청한 페이지는 수정되지 않음
- 캐시를 목적으로 사용
- 클라이언트에게 리소스가 수정되지 않았음을 알려준다. 따라서 클라이언트는 로컬 PC에 저장된 캐시를 재사용 한다.
- 304 응답은 응답에 메시지 바디를 포함하면 안된다.
- 조건부 GET, HEAD 요청 시 사용
4xx
클라이언트에 오류가 있음을 나타낸다.
- 400(잘못된 요청): 서버가 요청의 구문을 인식하지 못함
- 요청 구문, 메시지 등의 오류
- 요청 파라미터가 잘못되거나, API 스펙이 맞지 않을 때
- 401(권한 없음): 인증이 필요함
- 401 오류 발생 시 응답에 WWW-Authenticate 헤더와 함께 인증 방법을 설명
- 403(Forbidden, 금지됨): 서버가 요청을 이해했지만 승인을 거부함
- 주로 인증 자격 증명은 있지만, 접근 권한이 불충분한 경우
- 404(Not Found, 찾을 수 없음): 서버가 요청한 페이지를 찾을 수 없음
- 요청 리소스가 서버에 없거나 클라이언트가 권한이 부족한 리소스에 접근할 때 해당 리소스를 숨기기 위해 사용
5xx
서버가 유효한 요청을 명백하게 수행하지 못함(서버 오류)
- 500(내부 서버 오류): 서버에 오류가 발생하여 요청을 수행할 수 없다
- 503(서비스를 사용할 수 없음): 서버가 일시적인 과부하 또는 예정된 작업으로 잠시 요청을 처리할 수 없음
- Retry-After 헤더 필드로 얼마뒤에 복구되는지 보낼 수도 있음
Comments powered by Disqus.