[WEB] HTTP 상태코드 1xx ~ 5xx

728x90

HTTP 상태코드란?

HTTP 상태코드는 클라이언트가 서버에 요청을 보낼 때 서버가 응답으로 반환하는 코드이다다. 이 상태코드는 서버와 클라이언트 사이의 상호작용 상태를 나타내며 5개의 범주로 구분된다. 

  • 1XX: Informational(정보 제공)
    • 임시 응답으로 현재 클라이언트의 요청까지는 처리되었으니 계속 진행하라는 의미이다. HTTP 1.1 버전부터 추가되었다.
  • 2XX: Success(성공)
    • 클라이언트의 요청이 서버에서 성공적으로 처리되었다는 의미이다.
  • 3XX: Redirection(리다이렉션)
    • 완전한 처리를 위해서 추가 동작이 필요한 경우이다. 주로 서버의 주소 또는 요청한 URI의 웹 문서가 이동되었으니 그 주소로 다시 시도하라는 의미이다.
  • 4XX: Client Error(클라이언트 에러)
    • 없는 페이지를 요청하는 등 클라이언트의 요청 메시지 내용이 잘못된 경우를 의미한다.
  • 5XX: Server Error(서버 에러)
    • 서버 사정으로 메시지 처리에 문제가 발생한 경우이다. 서버의 부하, DB 처리 과정 오류, 서버에서 익셉션이 발생하는 경우를 의미한다.

각 범주안에서 상세한 상태코드를 확인할 수 있다. 아래에서는 각 범주의 주요 상태코드를 알아보자.

1XX 상태코드 (Informational, 정보 제공)

상태코드 메시지 내용
100 Continue 요청의 일부를 받은 서버가 나머지 요청을 보내도 된다고 응답한다.
101 Switching Protocols 클라이언트의 요청에 따라 서버가 프로토콜을 변경했음을 나타낸다. 주로 HTTP에서 WebSocket으로의 전환에 사용된다.
102 Processing WebDAV 서버가 요청을 수신하고 있으며 아직 응답이 준비되지 않았음을 나타낸다. 대규모 처리가 필요한 요청에서 사용된다.
103 Early Hints 웹페이지에 필요한 리소스에 대한 힌트를 제공하여 리소스를 사전 로드하여 로딩을 빠르게한다.

 

2XX 상태코드 (Success, 성공)

상태코드 메시지 내용
200 OK 요청이 성공적으로 처리되었으며 서버는 요청된 데이터를 클라이언트에 반환한다.
201 Created 요청이 성공적으로 처리되었으며 새로운 자원이 생성되었음을 알린다. 주로 POST 요청에서 사용된다.
202 Accepted 요청이 서버에서 수락되었지만 아직 처리가 완료되지 않았음을 나타낸다.
203 Non-Authoritative Information 클라이언트가 요청한 정보를 반환하였지만 원본 데이터는 아니며 수정된 데이터일 수 있다.
204 No Content 요청이 성공적으로 처리되었으나 반환할 내용이 없음을 나타낸다. 주로 DELETE 요청에서 사용된다.
205 Reset Content 클라이언트가 입력 양식을 초기화해야 함을 나타낸다. 페이지를 다시 로드하거나 폼을 초기화할 때 사용된다.
206 Partial Content 서버가 클라이언트의 요청에 따라 일부 범위만 전송했음을 나타낸다. 주로 대용량 파일 다운로드에서 사용된다.
207 Multi-Status (WebDAV) 요청에 대한 여러 개의 응답이 있을 경우 사용된다.
208 Already Reported (WebDAV) 이미 이전 응답에서 동일한 리소스가 보고되었음을 나타낸다.
226 IM Used 서버가 요청을 처리하는 데 인스턴스 메타데이터를 사용했음을 나타낸다.

 

3XX 상태코드 (Redirection, 리다이렉션)

상태코드 메시지 내용
300 Multiple Choices 클라이언트가 선택할 수 있는 여러 리소스가 있음을 나타낸다.
301 Moved Permanently 요청된 리소스가 영구적으로 다른 URL로 이동했음을 나타낸다. 이후의 모든 요청은 새로운 URL로 해야한다.
302 Found 리소스가 임시로 다른 위치에 있으며 클라이언트는 새로운 위치로 리다이렉트해야 한다. 상태코드 301과 달리 리소스의 위치가 나중에 변경될 수 있다.
303 See Other 클라이언트가 GET 요청을 통해 다른 URI에서 리소스를 찾을 수 있음을 나타낸다.
304 Not Modified 클라이언트가 조건부 요청을 했으나 리소스가 수정되지 않았음을 나타낸다. 클라이언트는 캐시된 버전을 사용해야 한다.
305 Use Proxy 클라이언트는 지정된 프록시 서버를 통해 요청해야 한다. 보안상의 이유로 많이 사용되지 않는다.
306 Switch Proxy / Undefined 클라이언트가 대체 프록시를 사용하도록 리다이렉션(switch) 시킨다. 보안 문제로 더이상 사용되지 않는다.
307 Temporary Redirect 요청된 리소스가 임시로 다른 URL에 있으며 클라이언트는 동일한 메서드로 요청을 다시 보내야 한다.
308 Permanent Redirect 요청된 리소스가 영구적으로 다른 URL로 이동했으며 클라이언트는 앞으로 이 URL을 사용해야 한다. 301과 유사하지만 동일한 HTTP 메서드를 유지한다.

 

4XX (Client Errors, 클라이언트 오류)

상태코드 메시지 내용
400 Bad Request 클라이언트의 요청이 잘못되어 서버가 처리할 수 없음을 나타낸다.
401 Unauthorized 인증이 필요함을 나타낸다. 유효한 인증 자격이 없거나 제공되지 않은 경우 발생한다.
402 Payment Required 현재는 사용되지 않지만 향후 디지털 결제에 사용될 가능성이 있는 코드이다.
403 Forbidden 서버가 요청을 이해했으나 권한이 없어 실행을 거부한다.
404 Not Found 요청한 리소스를 찾을 수 없음을 나타낸다. 클라이언트가 존재하지 않는 URL로 접근했을 때 발생한다.
405 Method Not Allowed 요청에서 사용한 HTTP 메서드가 서버에서 허용되지 않음을 나타낸다.
406 Not Acceptable 요청의 헤더에서 지정한 콘텐츠 유형이나 언어가 서버에서 제공할 수 없을 때 발생한다.
407 Proxy Authentication Required 클라이언트가 프록시를 통해 인증해야 한다.
408 Request Timeout 서버가 클라이언트의 요청을 기다리다 시간이 초과되었음을 나타낸다.
409 Conflict 클라이언트의 요청이 서버 상태와 충돌했을 때 발생한다. 주로 PUT 요청에서 버전 충돌이 발생했을 때 사용된다.
410 Gone 요청한 리소스가 더 이상 서버에서 제공되지 않음을 나타낸다.
411 Length Required 요청에 Content-Length 헤더가 필요하지만 제공되지 않았을 때 발생한다.
412 Precondition Failed 클라이언트의 조건이 충족되지 않았을 때 발생한다. 조건부 요청에서 자주 사용된다.
413 Payload Too Large 클라이언트가 전송한 데이터가 서버가 처리할 수 있는 한도를 초과했을 때 발생한다.
414 URI Too Long 요청한 URL이 너무 길어 서버가 처리할 수 없을 때 발생한다.
415 Unsupported Media Type 서버가 지원하지 않는 미디어 유형을 클라이언트가 요청했을 때 발생한다.
416 Range Not Satisfiable 요청한 파일의 범위가 서버에서 제공할 수 없는 범위일 때 발생한다.
417 Expectation Failed 클라이언트의 Expect 헤더에서 지정한 기대사항이 서버에서 충족되지 않았을 때 발생한다.
418 I'm a teapot 만우절 RFC 2324에서 만들어진 유머 코드로 실제로는 사용되지 않는다.
421 Misdirected Request 서버가 이 요청을 처리할 수 없는 대상으로 향했을 때 발생한다.
422 Unprocessable Entity (WebDAV) 요청은 잘 구성되었으나 의미상 오류가 있어 처리할 수 없을 때 발생한다.
423 Locked (WebDAV) 요청된 리소스가 잠겨 있음을 나타낸다.
424 Failed Dependency (WebDAV) 이전 요청이 실패하여 현재 요청이 처리될 수 없음을 나타낸다.
425 Too Early 클라이언트가 너무 일찍 요청했을 때 발생하며 서버에서 아직 준비되지 않았음을 나타낸다.
426 Upgrade Required 클라이언트는 다른 프로토콜로 업그레이드해야 함을 나타낸다.
428 Precondition Required 서버가 요청을 처리하기 전에 조건을 요구할 때 발생한다.
429 Too Many Requests 클라이언트가 일정 시간 내에 너무 많은 요청을 했을 때 발생한다.
431 Request Header Fields Too Large 요청의 헤더가 너무 커서 서버에서 처리할 수 없을 때 발생한다.
451 Unavailable For Legal Reasons 법적인 이유로 리소스가 제공되지 않을 때 발생한다.
예: 정부의 검열

 

5XX (Server Errors, 서버 오류)

상태코드 메시지 내용
500 Internal Server Error 서버에서 예상하지 못한 오류가 발생하여 요청을 처리할 수 없을 때 발생한다.
501 Not Implemented 서버가 요청한 기능을 지원하지 않을 때 발생한다.
502 Bad Gateway 게이트웨이 또는 프록시 서버가 상위 서버로부터 잘못된 응답을 받았을 때 발생한다.
503 Service Unavailable 서버가 일시적으로 과부하 상태이거나 유지보수 중일 때 발생한다.
504 Gateway Timeout 게이트웨이 또는 프록시 서버가 상위 서버로부터 응답을 기다리다 시간이 초과되었을 때 발생한다.
505 HTTP Version Not Supported 서버가 클라이언트가 사용한 HTTP 버전을 지원하지 않을 때 발생한다.
506 Variant Also Negotiates 서버가 변형 협상을 처리할 수 없을 때 발생한다.
507 Insufficient Storage (WebDAV) 서버에 저장 공간이 부족하여 요청을 처리할 수 없을 때 발생한다.
508 Loop Detected (WebDAV) 서버가 무한 루프를 감지했을 때 발생한다.
510 Not Extended 요청이 확장 기능을 요구하나 서버가 이를 지원하지 않을 때 발생한다.
511 Network Authentication Required 네트워크 접근을 위해 클라이언트가 인증을 받아야 할 때 발생한다. 주로 공용 Wi-Fi 네트워크에서 사용된다.
728x90

'WEB' 카테고리의 다른 글

Query Parameter와 Path Variable을 알아보자  (4) 2024.10.04
웹 보안을 위한 정책, CORS?  (0) 2024.08.27
HTTPS에 대해 알아보자  (2) 2024.08.27
웹 서버 Session 저장  (0) 2024.08.23
웹 브라우저 Storage  (0) 2024.08.23