[HTTP] 상태코드
클라이언트가 보낸 요청에 대한 처리 상태를 응답 메시지에서 상태코드를 통해 알려준다.
100번대 (Informational) : 요청이 수신되고 처리중
200번대 (Successful) : 요청 정상 처리
300번대 (Redirection) : 요청이 완료되려면 추가 행동이 필요
400번대 (Client Error) : 클라이언트 오류
500번대 (Server Error) : 서버 오류
200번대
200 OK : 요청 성공을 의미함
201 Created : 요청에 성공하고 새로운 리소스가 반환됨 (POST 메서드를 사용한 경우 URI도 함께 반환)
202 Accepted : 요청이 접수됐지만 처리되진 않음
204 : No Content : 요청을 성공적으로 수행했지만 본문에 보낼 데이터가 없음. (임시저장을 생각해보자.)
300번대
300번대의 응답 결과에 Location 헤더가 있으면 해당 위치로 자동으로 이동한다. (Redirect)
기존 이벤트 페이지의 URL이 /event 였고, 바뀐 이벤트 페이지의 URL이 /new-event 라고 하자.
이 때 /event 를 웹 브라우저 입력해도 /new-event 로 이동시켜주는 작업을 리다이트라고 한다.
영구 리다이렉션
301, 308에 해당한다.
301은 리다이렉트 시 요청 메세지가 GET으로 바뀌며 본문이 제거될 수 있고, 308은 요청 메서드를 유지한다.
308번은 메세지를 유지하지만.. 어차피 리다이렉트된 주소에 정보를 다시 입력해야 하는 경우가 많아 308보다는 301을 많이 사용한다.
일시적 리다이렉션
302 307 303에 해당한다.
자주 사용한다.
302 Found : 301처럼 요청 메서드를 GET으로 바꾸고 본문이 제거될 수 있다. (보통 많이 씀)
307 Temporary Redirect : 요청 메서드와 본문을 유지한다.
303 See Other : 요청 메서드를 GET으로 바꾼다.
리다이렉션을 사용하는 대표적인 예시이다.
쇼핑몰에서 POST 메서드로 주문을 넣었다고 하자. 주문을 넣은 결과 화면에서 새로고침하면 해당 URL으로 주문이 또 들어가게 돼 중복 주문이 발생한다.
리다이렉션을 사용해보자.
POST 메서드로 주문을 넣는다. 이 때 상태코드로 200 OK 대신 302 Found를 넘겨준다.
이제 결과 화면으로 리다이렉트됐다. 여기서는 새로고침해도 GET 메서드이기 때문에 주문 정보를 조회한다.
실수로 새로고침했을 때 중복 주문이 쌓이는걸 방지한다.
307 303을 사용하는게 좋지만 많은 애플리케이션의 기본값은 302이다.
메서드가 GET 으로 변해도 상관없으면 기본값인 302를 사용하자.
기타 리다이렉션
300 304에 해당한다.
300 Multiple Choices : 안씀
304 Not Modified : 리소스가 수정되지 않았으니 캐시를 그대로 쓰라고 알려준다. (캐시로 리다이렉트)
400 / 500번대
400번대 오류는 클라이언트에서 오류가 발생해 몇 번을 재시도해도 오류가 고쳐질 가능성이 없다.
하지만, 500번대 오류는 서버에서 발생한 오류로 서버에서 오류가 고쳐진다면 재시도 시 고쳐질 가능성이 있다.
400 Bad Request : 클라이언트의 잘못된 요청으로 서버가 요청을 처리할 수 없음.
401 Unauthorized : 클라이언트가 해당 리소스에 대한 인증이 필요함
* Authentication : 로그인 Authorization : 권한 부여
403 Forbidden : 서버가 요청을 이해했지만 승인을 거부함. Authorization과 연관된 문제일 가능성이 높다.
404 Not Found : 요청 리소스를 찾을 수 없음.
500 Internal Server Error : 서버 문제로 오류 발생. (애매하면 500)
503 Service Unavailable : 서비스 이용 불가. (잠시 서버를 내려놓는 경우)
'Computer Science > Network' 카테고리의 다른 글
[HTTP] HTTP 쿠키와 세션 (0) | 2023.06.12 |
---|---|
[HTTP] 헤더 / 쿠키와 캐시 (0) | 2022.08.13 |
[HTTP] HTTP 메서드와 활용 (1) | 2022.08.12 |
[HTTP] URL / HTTP 기본 (1) | 2022.08.12 |
[HTTP] 클라이언트와 서버 간의 통신 (TCP, UDP, IP, DNS) (0) | 2022.08.10 |
댓글
이 글 공유하기
다른 글
-
[HTTP] HTTP 쿠키와 세션
[HTTP] HTTP 쿠키와 세션
2023.06.12 -
[HTTP] 헤더 / 쿠키와 캐시
[HTTP] 헤더 / 쿠키와 캐시
2022.08.13 -
[HTTP] HTTP 메서드와 활용
[HTTP] HTTP 메서드와 활용
2022.08.12 -
[HTTP] URL / HTTP 기본
[HTTP] URL / HTTP 기본
2022.08.12