HTTP 상태 코드
클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능
- 1xx(Information) : 요청이 수신되어 처리중
- 2xx(Successful) : 요청 정상 처리
- 3xx(Redirection) : 요청을 완료하려면 추가 행동이 필요
- 4xx(Client Error) : 클라이언트 오류(잘못된 문법 등)로 서버가 요청을 수행할 수 없음
- 5xx(Server Error) : 서버 오류로 서버가 정상 요청을 처리하지 못함
1xx(Information)
요청이 수신되어 처리중, 실무에서 거의 사용X
2xx(Successful)
클라이언트의 요청을 성공적으로 처리
- 200 OK : 요청 성공
- 201 Create : 요청 성공해서 새로운 리소스가 생성됨
- 202 Accepted : 요청이 접수되었으나 처리가 완료되지 않음(배치 처리 등)
- 204 No Content : 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음
- ex. 문서 편집기의 저장 버튼
- 저장 버튼의 결과로 아무 내용이 없어도 됨
- 저장 버튼을 눌러도 같은 화면을 유지해야 함
3xx (Redirection)
요청을 완료하기 위해 유저 에이전트(웹 브라우저)의 추가 조치 필요
- 300 Multiple Choices : 사용 안함
- 301 Moved Permanently : 리다이렉트시 요청 메서드가 GET으로 변할 수 있고, 본문이 제거될 수'도' 있음
- 302 Found : 리다이렉스 요청 메서드가 GET으로 변할 수 있고, 본문이 제거될 수'도' 있음
- 303 See Other : 리다이렉트시 요청 메서드가 GET으로 변경
- 304 Not Modified : 캐시로 리다이렉트
- 307 Temporary Redirect : 리다이렉트시 요청 메서드와 본문 유지(요청 메서드 변경x)
- 308 Permanent Redirect : POST로 보내면 리다이렉트 요청도 POST, 리다이렉트시 요청 메서드와 본문 유지
리다이렉션
웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동(리다이렉트)
1.영구 리다이렉션
특정 리소스의 URI가 영구적으로 이동
원래의 URL를 사용X, 검색 엔진 등에서도 변경 인지
301 Moved Permanently
리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수'도' 있음
308 Permanent Redirect
301과 기능은 같음
리다이렉트시 요청 메서드와 본문 유지(처음 POST를 보내면 리다이렉트도 POST 유지)
2.일시 리다이렉션
- 리소스의 URI가 일시적으로 변경
- 검색 엔진 등에서 URL을 변경하면 안됨
- ex. 주문 완료 후 주문 내역 화면으로 이동
- 302 Found
- 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수'도' 있음
- 307 Temporary Redirect
- 302와 기능은 같음
- 리다이렉트시 요청 메서드와 본문 유지(요청 메서드를 변경하면 안됨)
- 303 See Other
- 302와 기능은 같음
- 리다이렉트시 요청 메서드가 GET으로 무조건 변경
PRG(Post/Redirect/Get)
- 상품 주문 후, 새로고침으로 인한 중복 주문 방지 등에 사용
- POST로 주문후에 주문 결과 화면을 GET 메서드로 리다이렉트
- 새로고침해도 결과 화면을 GET으로 조회
- 중복 주문 대신에 결과 화면만 GET으로 다시 요청
- PRG 이후 URL이 이미 POST -> GET으로 리다이렉트 되었기에 중복 주문X
3.특수 리다이렉션
- 결과 대신 캐시를 사용
- 캐시를 목적으로 사용
- 300, 304
4xx (Client Error)
클라이언트 오류로, 클라이언트의 요청에 잘못된 문법등으로 서버가 요청을 수행할 수 없음
- 오류의 원인이 클라이언트
- 똑같이 재시도해도 실패
- 400 Bad Request : 클라이언트가 잘못된 요청(문법, 파라미터 등)을 해서 서버가 요청을 처리할 수 없음
- 401 Unauthorized : 클라이언트가 해당 리소스에 대한 인증이 필요함
- 인증이 되지 않음
- 인증(Authentication) : 본인이 누구인지 확인, 로그인에 사용
- 인가(Authorization) : 권한 부여(특정 리소스에 접근할 수 있는 권한)
- 인증이 있어야 인가가 존재
- 403 Forbidden : 서버가 요청을 이해했지만 승인을 거부, 인증 자격 증명은 있지만 주로 접근 한이 불충분한 경우
- 404 Not Found : 요청 리소스가 서버에 없거나(URL 오류 등), 클라이언트가 권한이 부족한 리소스에 접근할 때 해당 리소스를 숨기고 싶을 때
5xx (Server Error)
서버 문제로, 재시도 하면 성공할 수도 있음(서버 복구, 수정 등이 마친 후)
- 500 Internal Server Error : 서버 내부 문제로 오류 발생, 애매하면 500 오류
- 503 Service Unavailable : 서버가 일시적인 과부하 또는 예정된 작업으로 잠시 요청을 처리할 수 없음