HTTP 상태코드 (응답코드) : 클라이언트의 요청 (Request)에 대한 응답(Response)에 대한 상태를 코드로 알려주는 것

 

상태코드는 1부터 5까지로 구성되어 있다.

Response
Code Syntax
Response Code  설명
1XX Informational 서버가 요청을 받아 처리중인 상태 (어떤 형태의 문제도 X)
2XX Success 요청한 작업이 성공적으로 처리됨
3XX Redirection 요청을 처리하기 위해 추가 동작이 필요함
(Redirection: 요청된 위치에서 리소스를 더 이상 사용할 수 없음을 알림)
4XX Client Error 클라이언트의 요청에 오류가 있는 상태
5XX Server Error 서버가 오류가 발생했거나 요청을 수행할 수 없는 상태


1XX ( Informational : 조건부 응답)

: 클라이언트의 요청을 처리중인 상태

1) 100: Continue

- 서버에 클라이언트의 요청의 시작 부분이 받아들여졌으며 나머지를 기다리고 있는 상태.

 

2) 101: Switching Protocols 

- 클라이언트가 서버에 프로토콜 전환을 요청했을 때, 서버가 이를 승인한 경우(변경 중임을 알려주는 상태코드).

 

3) 102: Processing

- 서버가 요청을 수신하고 처리중인 상태라 아직 응답을 할 수 없는 상태.

 

4) 103: Early Hints

- Link 헤더와 함께 사용되어 서버가 응답을 준비하는 동안 클라이언트가 사전 로딩(Pre-loading)을 할 수 있도록 하는 응답코드.

 


2XX (Success:  성공)

 : 클라이언트의 요청을 수신하여 성공적으로 처리한 상태

1) 200: OK

- 요청 정상 처리됨.

 

2) 201: Created 

- 요청이 정상 처리되어 리소스가 만들어짐.

 

3) 202: Accepted 

- 요청은 승인됐지만, 처리되지는 않은 상태.

 

4) 204: No Content

- 요청은 정상 처리되었지만 응답에 본문(Body)가 없어 돌려줄 리소스가 없음.

- 처리 후 클라이언트에게 정보를 보낼 필요가 없는 경우에 사용됨

 

5) 206: Partial Content 

- 리소스의 일부분만 제공되는 경우.

- 범위(range)가 지정된 요청일 경우에 사용된다. 예를 들면 클라이언트에서 다운로드 범위를 지정한 경우에 그 부분만 제공하기 위해 사용됨.


3XX (Redirection: 리디렉션 완료)

: 요청을 처리하는데 추가동작이 필요 

1) 300: Multiple Choices

- 클라이언트의 요청에 대해 서버에서 여러 개의 응답이 있을 때, 사용자 에이전트 또는 사용자는 하나의 응답을 선택해야 함.

- 응답을 선택하는 방법은 표준화되지 않아 잘사용되지 않음.

 

2) 301: Moved Permanently

- 요청한 리소스의 URI가 영구적으로 변경됨 (새 URI를 사용해야함).

- 리다이렉트시, HTTP 메소드를 GET로 바꿔서 전송함.

 

3) 302: Found

- 요청한 리소스의 URI가 일시적으로 변경되었기에, 클라이언트는 향후 요청을 반드시 동일한 URI로 해야함.

- 리다이렉트시, HTTP 메소드를 GET로 바꿔서 전송함.

 

4) 303: See Other

- 요청한 리소스가 다른 URI에 있어서 별도의 GET 요청을 해서 얻어야 하는 경우, 서버가 클라이언트로 직접 보내는 응답임

 

5) 304: Not Modified

- 캐시 목적으로 사용됨

- 마지막 요청 이후에 리소스가 수정되지 않음을 알려주며, 클라이언트는 응답의 캐시된 버전 (로컬 캐시 리소스)를 사용할 수 있음.

- 리디렉션과는 관계없는 처리를 함

 

6) 307: Temporary Redirect

- 302 (요청한 리소스의 URI가 일시적으로 변경)와 같지만, 리다이렉트시 HTTP 메소드가 유지됨.

e.g.) POST로 요청했다면, 리다이렉트 시에도 POST 로 요청해야 한다. 

 

7) 308: Permanent Redirect

- 301 (요청한 리소스의 URI가 영구적으로 변경됨)와 같지만, 리다이렉트시 HTTP 메소드가 유지됨.

e.g.) POST로 요청했다면, 리다이렉트 시에도 POST 로 요청해야 한다. 

 

# Permanent Status - 301과 308은 상태는 유사하지만, 301은 리다이렉트시, HTTP 메소드를 GET 으로 바꿔서 전송하고, 308은 첫 HTTP 메소드를 리다이렉트시도 그대로(유지) 사용한다.

 

# Temporary Status - 302와 307은 상태는 유사하지만 302은 리다이렉트시, HTTP 메소드를 GET 으로 바꿔서 전송하고, 307은 첫 HTTP 메소드를 리다이렉트시도 그대로(유지) 사용한다.


 

4XX (Client Error: 클라이언트 에러)

: 클라이언트 측의 문제로 요청을 처리할 수 없는 상태

 

1) 400: Bad Request

- 클라이언트 쪽의 에러로 서버가 요청을 처리할 수 없는 상태 (잘못된 형식의 요청 구문)

 

2) 401: Unauthorised

Unautorised 로 표기되어 있지만 Unauthentication 이 더 이해하기 가까운 표현!

- 요청에 사용자 인증이 필요한 경우 (로그인 페이지 등).

- 응답에는 요청된 리소스에 적용할 수 있는 문제가 포함된 WWW-Authenticate 필드가 포함되어야 함 ( 어느 인증 방식을 사용할 것인지).

- 단순한 클라이언트 권한이 없는 경우는 403 Forbidden 사용해야 함.

 

3) 403: Forbidden

- 클라이언트가 접근할 권한이 없어, 서버가 요청을 거부하는 경우.

- 서버는 요청을 이해했고 클라이언트를 알고 있음, 단순히 접근권한 불충분으로 승인을 거부한 경우.

 

4) 404: Not Found 

- 요청한 리소스를 찾을 수 없음.

 

5) 405: Method Not Allowed

- 클라이언트가 허용되지 않는 HTTP 메서드를 요청했을 경우. 

- e.g) POST 요청받는 서버에 GET 으로 보내는 경우.

 

6) 407: Proxy Authentication Required

- 401과 비슷하지만, 클라이언트가 프록시에 의해 완료된 인증이 필요한 경우.

 

7) 408: Request Timeout

- 요청 시간이 초과된 경우.

 

8) 409: Conflict 

- 요청이 서버의 상태와 충돌한 경우.


5XX (Server Error: 서버 에러)

: 서버가 요청을 수행하는데 문제가 발생한 상태

1) 500: Internal Server Error

- 서버가 요청 처리 중에 발생한 오류.

 

2) 502: Bad Gateway

- 서버가 게이트웨이에서 잘못된 응답을 받은 경우 (다른 서버로 부터 유효하지 않은 응답을 수신한 경우).

 

3) 503: Service Unavailable

- 서버가 요청을 처리할 수 없는 상태.

- 서버 과부화나 유지보수중의 이유로 요청 처리 불가함.

 

4) 504: Gateway Timeout

- 게이트웨이 역할을 하는 서버가 연결된 다른 서버로 부터 응답시간이 초과된 상태.

- 서버 간의 네트워크 오류이거나 실제 서버의 문제일 가능성이 큼.

 

5) 505: HTTP Version Not Supported 

- 요청에 사용된 HTTP 버전이 해당 서버에서 지원이 안되는 경우.

'Web > Web 개론' 카테고리의 다른 글

REST API  (0) 2022.01.06

+ Recent posts