본문 바로가기
프로그래밍/Web Basic

상태 코드 200, 300

by YuminK 2023. 8. 1.

상태코드

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

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

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

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

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

 - 5xx (Server Error) 서버 오류, 서버가 정상 요청을 처리하지 못함

 

2xx (Sucessful)

- 200 OK

- 201 Created 

- 202 Accepted

- 204 No Content

202 Accepted

요청이 접수 되었으나 처리가 완료되지 않았음

 - 배치 처리 같은 곳에서 사용

 - 요청 접수 후 1시간 뒤 배치 프로세스가 요청을 처리함

 

204 No Content

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

 - 예) 웹 문서 편집기에서 save 버튼

 - save 버튼의 결과로 아무 내용이 없어도 된다.

 - save 버튼을 눌러도 같은 화면을 유지해야 한다.

 - 결과 내용이 없어도 204메시지 만으로 성공을 인식할 수 있다. (200대 메시지)

 

3xx (Redirection)

요청을 완료하기 위해 유저 에이전트 추가 조치 필요

 - 300 Multiple Choices

 - 301 Moved Permanently

 - 302 Found

 - 303 See Other

 - 304 Not Modified

 - 307 Temporary Redirect

 - 308 Permanent Redirect

 

리다이렉션 이해

웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동한다.

리다이렉션의 종류

1. 영구 리다이렉션 - 특정 리소스의 URI가 영구적으로 이동

예) /members => /users

예) /event => /new-event

 

2. 일시 다이렉션 - 일시적인 변경

주문 완료 후 주문 내역 화면으로 이동

PRG: Post/Redirect/Get

 

3. 특수 리다이렉션

결과 대신 캐시를 사용

 

영구 리다이렉션(301, 308)

 - 리소스의 URI가 영구적으로 이동

 - 원래의 URL를 사용하지 않고 검색 엔진 등에서도 변경 인지

 - 301 Moved Permanently

리다이렉트 시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있다(may)

 - 308 Permanent Redirect

301과 기능은 같음

리다이렉트시 요청 메서드와 본문 유지(처음 POST를 보내면 리다이렉트도 POST 유지)

 

일시적인 다이렉션(302, 307, 303)

 - 리소스의 URI가 일시적으로 변경

 - 검색 엔진 등에서 URL을 변경하면 안 된다. 

 - 302 Found

리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음(MAY)

 

 - 307 Temporary Redirect

302와 기능은 같음

리다이렉트시 요청 메서드와 본문 유지(요청 메서드를 변경하면 안 된다. MUST NOT)

 

 - 303 See Other

302와 기능은 같음

리다이렉트시 요청 메서드가 GET으로 변경

 

PRG: Post/Redirect/Get

일시적인 리다이렉션 - 예시

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

 - 새로고침은 다시 요청

 - 중복 주문이 될 수 있다.

 

POST로 주문 후 새로고침으로 인한 중복 주문 방지

POST로 주문 후 주문 결과 화면을 GET으로 리다이렉트

새로고침해도 결과 화면을 GET으로 조회

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

PRG 이후 리다이렉트

주문 요청 후 GET 메서드로 변경되어 결과 화면만 조회한다. 

 

기타 리다이렉션(300, 304)

 - 300 Multiple Choices: 안 쓴다.

 - 304 Not Modified

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

클라이언트에게 리소스가 수정되지 않았음을 알려준다. (클라이언트는 로컬 PC에 저장된 캐시를 재사용한다.)

304 응답은 응답에 메시지 바디를 포함하면 안 된다. 

조건부 GET, HEAD 요청시 사용

 

출처: HTTP 웹 기본 지식 강의(김영한)

'프로그래밍 > Web Basic' 카테고리의 다른 글

HTTP 헤더  (0) 2023.08.01
상태코드 400, 500  (0) 2023.08.01
URI 설계 예시(POST, PUT, HTML Form)  (0) 2023.08.01
HTTP 메서드의 속성, 데이터 조회, HTML Form  (0) 2023.07.31
HTTP 메서드  (0) 2023.07.30

댓글