HTTP 상태 코드
상태 코드
- 클라이언트가 보낸 요청 처리 상태를 응답에서 알려주는 기능
200번대 (Successful)
- 클라이언트의 요청을 성공적으로 처리
- 200 : OK
- 201 : Created
- 202 : Accepted
- 요청이 접수는 됐으나 처리가 완료되지 않았음
- 배치 처리 같은 곳에서 사용
- 204 : No Content
- 서버가 요청을 성공적으로 수행했으나, 응답 페이로드 본문에 보낼 데이터가 없는 경우
- 웹 문서 편집기에서의 save 버튼
- 결과 내용이 없더라도 204 메세지만으로 성공을 인식 가능
300번대 (Redirection)
- 요청을 완료하기 위해 유저 에이전트(클라이언트 프로그램 - 웹 브라우저)의 추가 조치 필요
- 종류
- 영구 리다이렉션 - 특정 리소스 URI가 영구적으로 이동
- 원래의 URL을 사용하지 않음
- 검색 엔진 등에서도 변경 인지 가능
- 일시적 리다이렉션 - 일시적인 변경
- PRG (Post / Redirect / Get)
- 검색 엔진 등에서 URL 변경하면 안됨
- 특수 리다이렉션 - 결과 대신 캐시를 사용
- 영구 리다이렉션
- 301 : Moved Permanently
- 리다이렉트시 요청 메소드가 GET으로 변경할 수 있음 (MAY)
- 본문이 제거될 수 있음
- 308 : Permanent Redirect
- 301과 기능은 같음
- 리다이렉트시 요청 메소드와 본문 유지 (변경되면 안돼 - MUST NOT)
- 일시적 리다이렉션 (많이 쓰임)
- 302 - Found
- 리다이렉트시 요청 메소드가 GET으로 변경할 수 있음 (MAY)
- 본문이 제거될 수 있음
- 307 - Temporary Redriect
- 302와 기능은 같음
- 리다이렉트시 요청 메소드와 본문 유지 (변경되면 안돼 - MUST NOT)
- 303 - See Other
- 302와 기능은 같음
- 리다이렉트시 요청 메소드가 GET으로 변경 (MUST)
- PRG: Post / Redirect / GET
- 일시적 리다이렉션에서 주로 쓰이는 패턴
- POST로 주문 후에 새로고침으로 인한 중복 주문 방지
- POST로 주문 후에 주문 결과 화면을 GET 메소드로 리다이렉트
- 새로고침해도 결과 화면을 GET으로 조회하므로 중복 주문 방지 가능
- 302, 303 사용
- 특수 리다이렉션
- 300 - Multiple Choices
- 304 - Not Modified
- 캐시를 목적으로 사용
- 서버가 클라이언트에게 리소스가 수정되지 않았음을 알려줌
- 로컬 PC에 저장된 캐시를 재사용 (캐시로 리다이렉트)
- 로컬 캐시를 사용하므로 응답에 메세지 바디를 포함해선 안됨
- 조건부 GET, HEAD 요청시 사용
리다이렉션
웹 브라우저가 300번대 응답 결과에 Location 헤더가 있으면, 해당 경로로 자동 이동해주는 기능
위키피디아 참고
400번대 (Client Error)
- 클라이언트측 오류 (잘못된 문법 등)
- 이미 잘못된 요청, 데이터를 보내고 있으므로 재시도는 당연히 실패
- 400 : Bad Request
- 잘못된 요청으로 서버가 요청을 처리할 수 없음
- 요청 구문, 메시지 오류 등 (요청 파라미터, API 스펙이 잘못된 경우)
- 401 : Unauthoried
- 해당 리소스에 대한 인증(Unauthorized)이 필요
- 응답에 WWW-Authenticate 헤더와 함께 인증 방법을 설명
- 오류 이름이 Unauthorized(인가)로 되어있는데 사실상 Unauthenticated(인증)이 맞음
- 403 : Forbidden
- 서버가 요청을 이해했지만 승인을 거부
- 접근 권한이 불충분한 경우 (인가 X)
- 404 : Not Found
- 요청 리소스를 찾을 수 없음
- 권한이 부족한 리소스에 접근할 때 리소스를 숨기고 싶은 경우에도 사용됨
500번대 (Server Error)
- 서버 문제로 오류
- 서버 문제이기 때문에 재시도하면 성공할 수 있음
- 서버가 내부적으로 문제가 난 경우가 아니면 500을 쓰면 안됨
- 500 : Internal Server Error
- 서버 내무 문제로 오류 발생
- 애매하면 이 친구로 내보내자
- 503 : Service Unavailable
- 일시적 과부하 또는 예정된 작업으로 잠시 요청을 처리할 수 없음
- Retry - After 헤더 필드로 복구 예정 일시를 보낼 수 있음
인증과 인가
인증(Authentication) : 본인이 누구인지 확인 (로그인)
인가(Authorization) : 권한 레벨 (ex-ADMIN 권한)
위키피디아 참고
인프런 - 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 정리한 내용입니다.
김영한님 인프런 강의
댓글남기기