728x90

HTTP 상태코드에 대해서 배워보자.

 

  • 상태 코드

상태코드는 서버에서 클라이언트에게 보내며, 클라이언트가 보낸 요청에 대한 응답의 상태를 알려준다.

 

- 1XX (Informational) : 요청이 수신되어 처리 중인 상태

- 2XX (Successful) : 요청 정상 처리 상태

- 3XX (Redirection) : 요청을 완료하려면 추가 행동이 필요한 상태

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

- 5XX (Server Error) : 서버 오류, 서버가 요청을 처리하지 못하는 상태

 

1XX (Informational)

요청이 수신되어 현재 처리 중인 상태로, 현재는 거의 사용하지 않는다고 한다.

 

2XX (Successful)

클라이언트의 요청을 정상적으로 처리한 상태이다.

 

- 200 OK

가장 평범한, 요청 성공이다.

- 201 Created

요청에 성공해서 새로운 리소스가 생성이 된다.

- 202 Accepted

요청은 접수 되었으나, 처리가 완료되지 않은 상태이다.

- 204 No Content

서버가 요청을 정상적으로 수행했지만, 응답으로 보낼 데이터는 없다.

버튼을 눌러도 같은 화면을 유지해야 하는 상황에서 사용하며, 결과 내용이 없어도 204만으로도 성공을 인식할 수 있다.

 

3XX (Redirection)

요청을 완료하기 위해 추가적인 조치가 필요한 상태이다.

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

 

- 300 Multiple Choices

- 301 Moved Permanently

- 302 Found

- 303 See Other

- 304 Not Modified

- 307 Temporary Redirect

- 308 Permanent Redirect

 

일단 흐름을 이해하면 이렇게 된다.

Location에 있는 페이지로 이동한다.

 

리다이렉션의 종류에는

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

특정 리소스의 URI가 영구적으로 이동했을 때

원래의 URL을 사용하지 않으며, 검색 엔진 등에서도 변경을 인지한다.

301은 Moved Permanently로 리다이렉트 요청 메서드가 GET으로 변하고, 바디 부분이 제거될 수 있다.

308은 Permanent Redirt로 리다이렉트시 요청 메서도와 본문이 유지된다.

- 일시 리다이렉션 (302, 307, 303)

리소스의 URI가 일시적으로 변경된 상태이다.

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

307는 Temporary Redirect로 리다이렉트시 요청 메서드와 본문을 유지한다.

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

 

만약 POST 방식으로 결제를 한 후 웹 브라우저를 새로고침하면 중복 주문이 되는 문제가 생길 수 있다.

이렇게 DB에 주문데이터가 중복으로 2개 들어간다.

이 문제를 해결하기 위해서 POST로 결재 후에 결재 화면을 GET 메서드로 리다이렉트한다.

그러면 POST로 가지 않기 때문에 중복 결재가 되는 일이 없어진다. (조회만 하기 때문에)

- 특수 리다이렉션

304는 Not Modified로 캐시 목적으로 사용한다.

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

 

4XX (Client Error)

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

오류의 원인이 클라이언트에 있을 때 4XX 오류가 발생한다.

 

400은 Bad Request로 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없을 때이다.

401은 Unauthorized로 클라이언트가 해당 리소스에 대한 인증이 필요한 상태이다.

403은 Forbidden로 서버가 요청을 이해했지만 승인을 거부한 상태이다.

404은 Not Found로 요청 리소스를 찾을 수 없는 상태이다.

 

 5XX (Servor Error)

서버 문제로 오류가 발생한 모든 경우이다.

의도적으로 만드는 페이지는 아닐 것이다.

'백엔드 > HTTP' 카테고리의 다른 글

HTTP 8일차  (0) 2023.03.10
HTTP 7일차  (0) 2023.03.10
HTTP 5일차  (1) 2023.03.09
HTTP 4일차  (0) 2023.03.08
HTTP 3일차  (0) 2023.03.06

+ Recent posts