[HTTP] 상태 코드 특징과 리다이렉션(PRG)에 대하여

728x90

 

상태 코드

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

 

- `1xx (Informational)` : 요청이 수신되어 처리 중

- `2xx (Successful)` : 요청 정상 처리

- `3xx (Redirection)` : 요청을 완료하려면 추가 행동이 필요

- `4xx (Client Error)` : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청 수행 불가

- `5xx (Server Error)` : 서버 오류, 서버가 정상 요청 처리 불가

 

2xx (Successful)

- 200 OK : 요청 성공

- 201 Created : 요청 성공해서 새로운 리소스 생성

- 202 Accepted : 요청 접수되었으나 처리가 완료되지 않음

- 204 No Content : 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음

(ex. 웹 문서 편집기에서 save 버튼)

 

보통 실무에서 `200`, `201` 까지만 사용한다.

 

3xx (Redirection)

응답 결과에 Location 헤더가 있으면, Location 위치로 자동 이동

HTTP/1.1 301 Moved Permanently
Location: /new-event

 

리다이렉션의 종류

- `영구 리다이렉션` : 특정 리소스의 URI 가 영구적으로 이동, 검색 엔진 최적화

- `일시 리다이렉션` : 일시적인 변경

  > PRG (Post Redirect Get) : POST 후 새로고침으로 인한 중복 POST 방지 (새로고침해도 GET으로 조회)

(ex. 주문 완료 후 주문 내역 화면으로 이동)

- `특수 리다이렉션` : 결과 대신 캐시를 사용

 

> 참고 <

SEO(검색 엔진 최적화) 관점에서

영구 리다이렉션 : 원래 URL 랭킹을 새 URL 이 물려받아 랭킹 유지

일시 리다이렉션 : 원래 URL 로 유지할 가능성이 있음, 랭킹 유지 안 됨

 

영구 리다이렉션

- 301 Moved Permanently : 리다이렉트시 요청 메서드가 GET 으로 변하고, 본문이 제거 (확실 X)

- 308 Permanent Redirect : 리다이렉트시 요청 메서드와 본문 유지

보통 실무에서 `301` 을 사용한다.

(영구적으로 URI 가 변경되면 내부적으로 전달되는 데이터가 다 바뀌는 경우가 많음)

 

일시 리다이렉션

- 302 Found : 리다이렉트시 요청 메서드가 GET 으로 변하고, 본문이 제거 (확실 X)

- 307 Temporary Redirect : 리다이렉트시 요청 메서드와 본문 유지

- 303 See Other : 리다이렉트시 요청 메서드가 GET 으로 변경 (확실 O)

보통 실무에서 `302` 를 사용한다.

 

특수 리다이렉션

- 304 Not Modified

  : 캐시로 리다이렉트함

  : 클라이언트에게 리소스가 수정되지 않았음을 알려주어 로컬 PC에 저장된 캐시를 재사용

  : 응답에 메시지 바디를 포함 X (로컬 캐시가 제대로 동작하기 위함)

  : 조건부 GET, HEAD 요청 시 사용

실무에서 `304`는 많이 사용한다.

 

4xx (Client Error)

오류의 원인이 클라이언트에 있고, 이미 잘못된 요청이기 때문에 똑같은 재시도가 실패

 

- 400 Bad Request

  : 클라이언트가 잘못된 요청을 해서 서버가 요청 처리 불가

  : 클라이언트는 요청 내용을 다시 검토하고, 보내야 함

- 401 Unauthorized

  : 클라이언트가 해당 리소스에 대한 인증이 필요함

  : 응답에 WWW-Authenticate 헤더와 인증 방법을 설명

- 403 Forbidden

  : 서버가 요청을 이해했지만 승인 거부

  : 인증 자격 증명은 있지만, 접근 권한이 불충분한 경우

- 404 Not Found

  : 요청 리소스가 서버에 없음

  : 보안적인 이유로 해당 리소스 존재를 숨기고 싶은 경우

 

5xx (Server Error)

오류의 원인이 서버에 있고, 똑같은 재시도가 성공할 수 있음

 

- 500 Internal Server Error

  : 서버 문제로 오류 발생, 애매하면 사용

- 503 Service Unavailable

  : 서비스 이용 불가

  : 서버가 일시 과부하 또는 예정된 작업으로 잠시 요청을 처리할 수 없음

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

 

 

 

 

 

 

 

 

 

 

 

출처 | HTTP 웹 기본 지식(김영한) - 인프런

 

 
728x90