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 |