HTTP 상태코드

5o_hyun·2023년 1월 5일
0
post-thumbnail

최종정리
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 : 서비스 이용 불가, 서버가 일시적인 과부하 또는 예정된 작업으로 잠시 요청을 처리할수없음
profile
학생 점심 좀 차려

0개의 댓글