HTTP 영한님 강의를 들으며 배운 내용을 정리 해보고자 한다.
클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능
1XX : 요청이 수신 되어 처리 중 - 거의 사용하지 않음
2XX : 요청 정상 처리
3XX : 요청을 완료하려면 추가 행동 필요 - Redirection
4XX : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청 수행 불가능
5XX : 서버 오류, 서버가 정상 요청을 처리하지 못함
이렇게 백의 단위 숫자로 큰 틀에서 의미를 파악 할 수 있다. 조금 더 세부적으로 알아보자.
웹 브라우저는 3XX 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동(Redirect)
302와 기능적으로 같음
리다이렉트시 요청 메서드와 본문 유지(요청 메서드를 변경하면 안된다 - MUST NOT)
302와 기능적으로 같음
리다이렉트시 요청 메서드가 GET으로 변경
새로 고침은 다시 요청
만약 새로운 회원 등록 후, 결과 창에서 새로 고침 시, 기존 요청인 POST 요청을 다시 보내 회원 중복 등록
따라서 해결 방법은, POST로 등록 후 결과 화면을 GET 메서드로 리다이렉트 - 이후 새로 고침 시, 결과 화면 GET으로 조회
클라이언트에게 리소스가 수정되지 않았음을 알려준다.
따라서 클라이언트는 캐시가 유효 기간이 끝나도 로컬 저장 캐시 다시 사용 가능
304 응답은 메세지 바디를 포함하지 않고 헤더만 포함
클라이언트가 해당 리소스에 대한 인증이 필요함
인증(Authentication) - 본인이 누구인지 확인 (로그인) != 권한 : ADMIN 권한
이름은 Unauthorized지만, Authentication으로 생각
서버가 요청을 이해했지만 승인 거부
접근 권한이 불충분한 경우 - 어드민 등급이 아닌 사용자가 로그인은 했지만, 어드민 등급 리소스에 접근
요청 리소스가 서버에 없음
또는, 클라이언트가 권한이 부족한 리소스에 접근할 시 해당 리소스를 숨기고 싶을때
서버 문제로 오류 발생
4XX과 달리 서버에 문제가 있어, 재시도 시 성공 가능
정말 서버에 문제가 있을때만 사용해야됨 - 서버 복구, 패치 등등
서버 내부 문제로 오류 발생
애매하면 500 오류
서비스 이용 불가
일시적인 과부하 또는 예정된 작업으로 잠시 요청 처리 불가능
출처 : 모든 개발자를 위한 HTTP 웹 기본 지식 - INFLEARN(영한)