wasup

HTTP) 상태코드, 100번대, 200번대, 300번대, 400번대, 500번대 오류 본문

IT etc

HTTP) 상태코드, 100번대, 200번대, 300번대, 400번대, 500번대 오류

wasupup 2021. 8. 15. 10:59
반응형

상태코드 : 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능!

 

100번대 : 요청이 수신되어 처리 중

200번대 : 요청 정상 처리

300번대 : 요청을 완료하려면 추가 행동 필요

400번대 : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음

500번대 : 서버 오류, 서버가 정상 요청을 처리하지 못함.


200번대

200 : OK

201 : Created : 새로운 리소스 생성!

202 : Accepted : 요청이 정상 접수되었으나 처리는 완료되지 않음

204 : No Content : 서버가 성공적으로 요청을 처리했지만, 본문에 보낼 데이터가 없음.


300번대 : 리다이렉션

300 : Multiple Choices

301 : Moved Permanently : 사용되지 않는 혹은 이동된 URI를 응답함.

302 : Found -> GET으로 변할 수 있음.

303 : See Other -> 메서드가 GET으로 변경 됨.

304 : Not Modified

307 : Temporary Redirect -> 메서드가 변하면 안됨.

308 : Permanent Redirect


리다이렉션 종류 

영구 리다이렉션

: 특정 리소스의 URI가 영구적으로 이동

: 원래의 URL을 사용할 수 없음 : 검색 엔진등에서도 변경 인지 가능

: 301 Moved Permanently - 리다이렉트 요청 메서드가 GET으로 변하고 본문이 제거될 수 있다.

: 308 Permenent Redirect - 201과 기능은 같다. 리다이렉트시 요청 메서드와 본문을 유지한다.

일시 리다이렉션

: 일시적 변경 예) 주문 완료 후 주문 내역 화면으로 이동

: 일시적인 변경이므로 검색엔진 등에서 URL을 변경하면 안된다.

: 302 Found - 리다이렉트시 요청 메서드가 GET으로 변하고 본문이 제거될 수 있다.

: 307 Temporary Redirect - 302와 기능은 같다. 리다이렉트시 요청 메서드와 본분을 유지한다. * 요청 메서드를 변경하면 안됨.

: 303 See Other - 302와 기능은 같다. 리다이렉트시 요청 메서드가 GET으로 변경된다.

일시 리다이렉션 예) PRG: POST/Redirect/Get

: POST로 주문 후 웹 브라우저를 새로고침하면?

-> 새로고침은 다시요청이므로 중복 주문이 들어갈 수 있다.

: POST로 주문 후 새로고침시 중복주문을 방지해야한다. (서버측 역할)

: POST로 주문 후 주문 결과 화면을 GET메서드로 리다이렉트한다.

: 새로고침 시 결과 화면을 GET으로 조회한다.

: 중복 주문 대신 결과 화면만 GET으로 다시 요청한다.

 

* PRG이후 리다이렉트시

URL은 이미 POST에서 GET으로 리다이렉트 되었기 때문에

새로고침을 해도 GET화면 출력


* 처음 302 스펙의 의도는 HTTP메서드를 유지하는 것이었으나

* 브라우저들이 대부분 GET으로 바꾸어버리거나 다르게 동작해서

* 모호한 302를 대신하는 307과 303이 등장했다.

* 301 대응으로는 308 등장

* 307과 303 사용을 권장하지만

* 현실적으로 이미 많은 애플리케이션 라이브러리들이 302를 기본 값으로 사용하므로

* 자동 리다이렉션시에 GET으로 변해도 되면 그냥 302를 사용해도 큰 문제는 없다.


기타 리다이렉션 : 300, 304

: 300 Multiple Choices : 안쓴다

: 304 Not Modified 

- 캐시를 목적으로 많이 사용한다.

- 클라이언트에게 리소스가 수정되지 않았음을 알려준다. : 캐시로 리다이렉트한다.

-> * 클라이언트는 로컬 PC에 저장된 캐시를 재사용한다.

- 304 응답은 로컬 캐시를 사용해야 하므로 응답에 메시지 바디를 포함하면 안된다. 

- 조건부 GET, HEAD요청시 사용한다.


400번대 - 클라이언트 오류

: 클라이언트 요청에 잘못된 문법으로 서버가 요청을 수행할 수 없는 상태이다.

: 오류의 원인이 클라이언트에 있다.

400 Bad Request

: 클라이언트가 요청구문, 메시지 오류 등의 잘못된 요청을 해서 서버가 요청을 처리할 수 없는 상태

: 클라이언트의 잘못이므로 클라이언트측에서 요청 내용을 다시 검토하고 보내야한다.

401 Unauthorized

: 클라이언트가 해당 리소스에 대한 인증(Authentication)이 되지 않은 상태이다.

: 본인이 누구인지 로그인 등으로 확인하고 - Authentication

: ADMIN처럼 권한이 필요한 특정 리소스에 접근하기 위해 권한인증이 있어야 인가가 있다 - Authorization

: 오류 메시지가 Unauthorized 이지만 인증이 되지 않은 상태이다.

403 Forbidden

: 인증 자격 증명은 있지만 접근 권한(등급)이 불충분한 경우 등으로 서버가 요청을 이해했지만 승인을 거부한 상태

404 Not Found

: 대부분 요청 리소스가 서버에 없는 경우이며 클라이언트가 권한이 부족한 리소스에 접근하거나 특정 리소스를 숨기고 싶을 때.


500번대 - 서버오류

: 서버에 문제가 있는 경우이기때문에 복구가 된 경우 재시도하면 성공 가능하다.

500 Internal Server Error

: 서버 내부 문제로 오류가 발생했을 때 애매한경우 500오류로 나온다.

503 Service Unavailable

: 서버가 일시적인 과부하 또는 예정된 작업으로 요청을 처리할 수 없는경우 : 서비스 이용 불가상태

: Retry-After 헤더 필드로 얼마 뒤에 복구가 되는지 보낼 수 있다.


[출처]

 

강의 : 

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

 

참고링크 :

https://developer.mozilla.org/ko/docs/Web/HTTP/Status/301

 

 

 

 

반응형
Comments