HTTP 상태코드 정리

HTTP 상태코드를 카테고리별로 정리하고 설명합니다.

41개 상태코드

1xx — 정보 (Informational)

코드이름설명
100
Continue
요청의 첫 부분이 수신되었으며 나머지를 계속 보내도 됩니다.
101
Switching Protocols
서버가 프로토콜 전환 요청을 수락했습니다. (예: HTTP → WebSocket)
102
Processing
서버가 요청을 수신하여 처리 중이지만 아직 응답이 없습니다. (WebDAV)
103
Early Hints
최종 응답 전에 Link 헤더 등 일부 응답 헤더를 미리 보냅니다.

2xx — 성공 (Success)

코드이름설명
200
OK
요청이 성공적으로 처리되었습니다. GET/PUT/PATCH 응답에 주로 사용.
201
Created
요청이 성공하여 새 리소스가 생성되었습니다. POST 응답에 주로 사용.
202
Accepted
요청이 수락되었지만 아직 처리되지 않았습니다. 비동기 처리에 사용.
204
No Content
요청이 성공했지만 응답 본문이 없습니다. DELETE 응답에 주로 사용.
206
Partial Content
Range 헤더에 의해 부분적 콘텐츠가 반환되었습니다. 파일 다운로드 재개 등.
207
Multi-Status
여러 리소스에 대한 상태를 XML로 반환합니다. (WebDAV)

3xx — 리다이렉션 (Redirection)

코드이름설명
300
Multiple Choices
요청에 대해 여러 응답이 가능합니다. 클라이언트가 선택해야 합니다.
301
Moved Permanently
리소스가 영구적으로 이동했습니다. 검색 엔진이 새 URL을 인덱싱합니다.
302
Found
리소스가 임시로 다른 URL에 있습니다. 원래 URL을 계속 사용합니다.
303
See Other
다른 URL에서 GET으로 리소스를 가져와야 합니다. POST 후 리다이렉트에 사용.
304
Not Modified
리소스가 변경되지 않았습니다. 캐시된 버전을 사용하세요.
307
Temporary Redirect
임시 리다이렉트. 원래 요청 메서드(POST 등)를 유지합니다.
308
Permanent Redirect
영구 리다이렉트. 원래 요청 메서드를 유지합니다. (301의 메서드 보존 버전)

4xx — 클라이언트 오류 (Client Error)

코드이름설명
400
Bad Request
잘못된 요청 구문, 유효하지 않은 파라미터, 잘못된 JSON 형식 등.
401
Unauthorized
인증이 필요합니다. 토큰이 없거나 만료된 경우. (WWW-Authenticate 헤더 포함)
403
Forbidden
인증은 되었지만 해당 리소스에 대한 접근 권한이 없습니다.
404
Not Found
요청한 리소스를 찾을 수 없습니다. 잘못된 URL이거나 삭제된 리소스.
405
Method Not Allowed
요청한 HTTP 메서드(GET, POST 등)가 해당 엔드포인트에서 허용되지 않습니다.
406
Not Acceptable
요청의 Accept 헤더에 맞는 콘텐츠 타입을 생성할 수 없습니다.
407
Proxy Authentication Required
프록시 서버의 인증이 필요합니다.
408
Request Timeout
서버가 요청을 기다리다 타임아웃되었습니다. 클라이언트가 너무 느린 경우.
409
Conflict
요청이 현재 리소스 상태와 충돌합니다. 동시 수정, 중복 생성 등.
410
Gone
리소스가 영구적으로 삭제되어 더 이상 이용할 수 없습니다. 404와 달리 의도적 삭제.
411
Length Required
Content-Length 헤더가 필요합니다.
412
Precondition Failed
요청 헤더의 전제 조건(If-Match 등)이 충족되지 않았습니다.
413
Payload Too Large
요청 본문이 서버의 허용 크기를 초과했습니다.
414
URI Too Long
요청 URI가 서버가 처리할 수 있는 길이를 초과했습니다.
415
Unsupported Media Type
지원하지 않는 Content-Type입니다. (예: XML만 지원하는데 JSON 전송)
422
Unprocessable Entity
요청 구문은 올바르지만 의미적으로 처리할 수 없습니다. 유효성 검증 실패.
429
Too Many Requests
너무 많은 요청을 보냈습니다. Rate limiting 적용. Retry-After 헤더 확인.
451
Unavailable For Legal Reasons
법적 사유로 접근이 차단된 리소스입니다.

5xx — 서버 오류 (Server Error)

코드이름설명
500
Internal Server Error
서버 내부에서 예상치 못한 오류가 발생했습니다. 가장 일반적인 서버 오류.
501
Not Implemented
서버가 요청된 HTTP 메서드나 기능을 아직 구현하지 않았습니다.
502
Bad Gateway
게이트웨이/프록시(Nginx 등)가 상위 서버에서 잘못된 응답을 받았습니다.
503
Service Unavailable
서버가 일시적으로 요청을 처리할 수 없습니다. 과부하, 유지보수, 배포 중.
504
Gateway Timeout
게이트웨이/프록시가 상위 서버 응답을 기다리다 타임아웃되었습니다.
505
HTTP Version Not Supported
서버가 요청에 사용된 HTTP 버전을 지원하지 않습니다.

자주 묻는 질문

HTTP 상태코드란 무엇인가요?
HTTP 상태코드는 클라이언트의 요청에 대한 서버의 응답 상태를 나타내는 3자리 숫자 코드입니다. 1xx(정보), 2xx(성공), 3xx(리다이렉션), 4xx(클라이언트 오류), 5xx(서버 오류)의 5개 카테고리로 분류됩니다.
301과 302 리다이렉트의 차이는 무엇인가요?
301(Moved Permanently)은 영구 리다이렉트로 검색 엔진이 새 URL을 인덱싱합니다. 302(Found)는 임시 리다이렉트로 원래 URL이 검색 엔진에 유지됩니다. SEO에서 중요한 차이입니다.
401과 403의 차이는 무엇인가요?
401(Unauthorized)은 인증이 필요하거나 인증에 실패한 경우입니다. 로그인하면 해결됩니다. 403(Forbidden)은 인증은 되었지만 해당 리소스에 대한 권한이 없는 경우입니다. 관리자 페이지에 일반 사용자가 접근하는 경우 등.
404와 410의 차이는 무엇인가요?
404(Not Found)는 리소스를 찾을 수 없다는 일반적인 상태입니다. 410(Gone)은 리소스가 의도적으로 영구 삭제되었음을 명시합니다. 검색 엔진은 410을 받으면 더 빨리 인덱스에서 제거합니다.
429 Too Many Requests는 어떻게 처리하나요?
서버의 Rate Limiting에 걸린 상태입니다. Retry-After 헤더를 확인하고 해당 시간 후 재시도하세요. API 클라이언트에서는 지수 백오프(Exponential Backoff) 전략을 구현하는 것이 좋습니다.
502와 503의 차이는 무엇인가요?
502(Bad Gateway)는 프록시/로드밸런서가 상위 서버에서 잘못된 응답을 받은 경우입니다. 503(Service Unavailable)은 서버가 과부하, 유지보수 등으로 일시적으로 요청을 처리할 수 없는 상태입니다.
REST API에서 가장 많이 사용하는 상태코드는 무엇인가요?
GET 성공: 200, POST 생성 성공: 201, DELETE 성공: 204, 잘못된 요청: 400, 인증 실패: 401, 권한 없음: 403, 리소스 없음: 404, 유효성 검증 실패: 422, 서버 오류: 500이 가장 자주 사용됩니다.

다른 도구