본문 바로가기

카테고리 없음

HTTP 상태 코드

크게 다섯 가지로 나뉘며, 각 분류별로 대표적인 상태 코드는 다음과 같다.

1. 100-199: 정보성 상태 코드

- 100(Continue): 요청의 시작 부분 일부가 받아들여졌음, 클라이언트는 계속 이어서 보내야 함

 

2. 200-299: 성공 상태 코드

- 200 OK: 엔터티 본문에 요청된 리소스 포함

- 201 Created: 서버가 객체를 생성했음. 응답에 Location 헤더(생성된 리소스에 대한 구체적인 참조)와 리소스를 참조할 수 있는 여러 URL을 엔터티 본문에 포함해야 함

- 202 Accepted: 요청은 받아들였으나, 서버는 아직 어떤 동작도 수행하지 않았음

- 204 No Content: 응답 메시지에 엔터티 본문 포함X, 주로 웹 브라우저 갱신 시 사용됨(ex. 폼 리프레시)

 

3. 300-399: 리다이렉션 상태 코드

- 클라이언트가 관심있어 하는 리소스에 대해 다른 위치를 사용하라고 말해주거나, 다른 응답을 제공

- 리다이렉션 상태 코드 + (선택적으로) Location 헤더를 보내 새 위치로 이동하게 해줌

- 300 Multiple Choices: 클라이언트가 동시에 여러 리소스를 가리키는 URL을 요청한 경우 리소스 목록과 함께 반환

- 301 Moved Permanently: 요청한 URL이 옮겨졌을 때 (Location 헤더에 현재 리소스가 존재하는 URL 포함)

- 302 Found: 301 상태코드와 같으나, 클라이언트 측에서 Location 헤더의 URL을 리소스를 임시로 가리키기 위한 목적으로만 사용해야 함 → 검색엔진에 노출되지 않음!! (그게 301과의 차이)

- 303 See Other: 클라이언트에게 리소스를 다른 URL에서 가져와야 한다고 말해줌(Location 헤더에 새 URL 포함됨)

- 304 Not Modified: 클라이언트가 조건부 요청을 보냈고, 그 요청한 리소스가 최근에 수정되지 않았음 (이때, 엔터티 본문 X)

- 일시적인 리다이렉트인지에 따라 302 or 307 처럼 갈림

- 클라이언트의 HTTP 버전에 따라 서버가 적합한 리다이렉트 상태 코드를 선택해야 한다,,

 

4. 400-499: 클라이언트 에러 상태 코드

- 클라이언트가 서버가 다룰 수 없는 무언가를 보낼 때. (존재하지 않는 URL에 대한 요청, 잘못 구성된 요청 메시지 등)

- 400 Bad Request: 클라이언트가 잘못된 요청을 보냄

- 401 Unauthorized: 리소스를 얻기 전에, 클라이언트에게 인증이 필요함을 알림

- 403 Forbidden: 요청이 서버에 의해 거부되었음, 엔터티 본문에 거절 이유를 설명할 수 있으나, 

보통 이 코드 자체가 거절의 이유를 숨기고 싶을 때 사용한다. 

- 404 Not Found: 서버가 요청한 URL을 찾을 수 없음

- 408 Request Timeout: 클라이언트의 요청을 완수하기에 시간이 너무 많이 드는 경우, 

서버는 이 상태코드로 응답 후 연결을 끊을 수 있음. (타임아웃의 길이는 서버마다 다름)

 

5. 500-599: 서버 에러 상태 코드

- 서버 자체에서 에러가 발생하는 경우

- 클라이언트가 서버의 제한에 걸림 or 게이트웨이 리소스같은 서버의 보조 구성요소에서 발생한 에러일수도! 

- 프락시가 클라이언트의 입장에서 서버와 대화를 시도할 때,

에러가나면 프락시는 5XX 서버 에러 상태 코드를 생성한다. 

- 500 Internal Server Error: 서버가 요청을 처리할 수 없게 만드는 에러를 만났을 때

- 501 Not Implemented: 클라이언트가 서버의 능력을 넘는 요청을 했을 때 

- 502 Bad Gateway: 프락시/게이트웨이처럼 행동하는 서버가 그 요청 응답 연쇄에있는 다음 링크로부터 가짜 응답에 맞닥뜨렸을 때. (ex. 자신의 부모 게이트웨이에 접속하는 것이 불가능할 때)

→ 이 가짜 응답이라는게 잘 이해가 안됨

- 504 Gateway Timeout

- 게이트웨이/프락시 쪽에서 타임아웃이 발생한것으로 408 과는 다름

 

참고

- 도서 <HTTP 완벽 가이드>