최종정리
HTTP 상태코드란, 클라이언트가 보낸 요청의 처리상태를 응답에서 알려주는 기능이다.
- 1xx : 요청 처리중
- 2xx : 요청 정상처리
- 3xx : 요청을 완료하려면 추가행동이 필요
- 4xx : 클라이언트 오류
- 5xx : 서버 오류
2xx : 요청 정상처리
- 200 OK : 정상처리
- 201 Created : 요청성공해서 새로운 리소스가 생성됨
- 202 Accpted : 요청 접수는 됬고 처리가 완료되지 않음
- 204 No Content : 요청을 성공적으로 수행했으나 보낼 응답이 없음 ( 웹문서편집기 save버튼 등 )
3xx : 요청을 완료하려면 추가행동이 필요해서 클라이언트에 다시보냄
영구적 리다이렉션
- 301 : 리다이렉트시 요청 메서드가 GET으로 변함
- 308 : 요청메서드 변하지 않음
일시적 리다이렉션
- 302 Found : 리다이렉트시 요청 메서드가 GET으로 변함
- 307 : 요청메서드 변하지 않음
- 303 : 리다이렉트시 요청 메서드가 GET으로 변함
307,303쓰면 좋겠지만 실무에서는 302로 통합해서 많이 사용
- 304 : 캐시로 리다이렉트한다.
4xx : 클라이언트 오류
- 400 : 요청구문 수정요구
- 401 : 인증이 필요
- 403 : 인증은 됬으나 권한이 없음
- 404 Not Found : 요청 리소스를 찾을수없음
5xx : 서버 오류
- 500 : 서버 내부 문제
- 503 : 서버의 과부하 등으로 잠시 서비스 이용 불가
HTTP 상태코드란, 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능
- 1xx : 요청이 수신되어 처리중
- 2xx : 요청 정상처리
- 3xx : 요청을 완료하려면 추가행동이 필요
- 4xx : 클라이언트 오류
- 5xx : 서버 오류
2xx(Successful) : 클라이언트의 요청을 성공적으로 처리
- 200 Ok
- 201 Created : 요청 성공해서 새로운 리소스가 생성됨
- 202 Accepted : 요청 접수했으나 처리가 완료되지않음 ( 서버가 1시간뒤에 배치 등 )
- 204 No Content : 서버가 요청을 성공적으로 수행했으나 응답에 보낼 데이터가 없음 ( 웹문서 편집기 save등 )
3xx(Redirection) : 요청을 완료하려면 추가행동이 필요해서 클라이언트에 다시보냄
영구적 리다이렉션 (301, 308)
특정 리소스의 URI가 영구적으로 이동
원래의 URL를 사용 X, 검색엔진이 변경 인지
- 301 Moved Permanently
리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음
- 308 Permanent Redirect
301과 기능은 같음
리다이렉트시 요청 메서드와 본문 유지(처음 POST를 보내면 리다이렉트도 POST 유지)
일시적 리다이렉션 (302, 307, 303)
리소스 URI가 일시적으로 변경
검색엔진이 URI 변경안함
- 302 Found
리다이렉트시 요청 메서드가 GET으로 변함 => 메서드가 GET으로 변할수있음
- 307 Temporary Redirect
302와 기능은 같음
리다이렉트시 요청 메서드와 본문 유지 => 요청메서드 안변함 post -> post
- 303 See Other
302와 기능은 같음
리다이렉트시 요청 메서드가 GET으로 변경
307 ,303만 쓰면좋겠지만 실무에선 그냥 302 많이씀
일시적 리다리헨션을 언제쓸까??
- POST로 주문후에 웹 브라우저를 새로고침하면? 새로고침은 다시 요청, 중복 주문이 될 수 있다.
- POST로 주문후에 새로고침으로 인한 중복 주문 방지를 해야한다.
- POST로 주문후에 주문 결과 화면을 GET 메서드로 리다이렉트
- 새로고침해도 결과 화면을 GET으로 조회
- 중복 주문 대신에 결과 화면만 GET으로 다시 요청
- PRG 이후 리다이렉트
- URL이 이미 POST => GET으로 리다이렉트 됨
- 새로 고침 해도 GET으로 결과 화면만 조회
304 Not Modified
- 캐시를 목적으로 사용함.
- 클라이언트에게 리소스가 수정되지 않았음을 알려준다. 따라서 클라이언트는 로컬pc에 저장된 캐시를 재사용한다. (캐시로 리다이렉트한다.)
- 304응답은 로컬캐시를 사용해야하므로 응답에 메시지바디를 포함하면 안된다.
4xx(Client Error) : 클라이언트오류
오류의 원인이 클라이언트에게 있다.
중요! 클라이언트가 이미 잘못된요청 한것이므로 똑같은 재시도가 실패함
- 400 Bad Request : 요청구문, 메시지 등등 오류, 클라이언트는 요청 내용을 다시 검토하고 보내야함
- 401 Unauthorized : 클라이언트가 해당 리소스에 대한 인증이 필요함, WWW-Authenticate 헤더와 함께 인증방법을 설명
- 403 Forbidden : 서버가 요청을 이해했지만 승인을 거부 , 어드민등급이 아닌 사용자가 접근
- 404 Not Found : 요청 리소스를 찾을수없음. 서버에 없음.
5xx(Server Error) : 서버오류
오류의 원인이 서버에 있다.
서버에 문제가 있기때문에 재시도하면 성공할수도있음 (복구가되거나 등)
- 500 Internal Server Error : 서버내부 문제로 오류발생. 백엔드에서 발생하는 모든 오류는 거의 500
- 503 Service Unavailable : 서비스 이용 불가, 서버가 일시적인 과부하 또는 예정된 작업으로 잠시 요청을 처리할수없음