wasup
HTTP) 상태코드, 100번대, 200번대, 300번대, 400번대, 500번대 오류 본문
상태코드 : 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능!
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
'IT etc' 카테고리의 다른 글
HTTP 헤더) 전송방식 (단순전송, 압축전송, 분할전송, 범위전송), 헤더의 특별한 정보, 인증 헤더 (0) | 2021.08.17 |
---|---|
HTTP헤더) 용도와 분류, 표현 헤더, 협상 헤더 (0) | 2021.08.16 |
HTTP) HTTP 메서드의 활용, HTTP API설계, 컬렉션, 스토어, HTTP FORM (0) | 2021.08.14 |
HTTP) HTTP 메서드, HTTP API, HTTP 메서드 - GET, POST, PUT, PATCH, DELETE, HTTP 메서드의 속성 (0) | 2021.08.13 |
형상관리 : Version Control Revision Control (0) | 2021.08.12 |