Skip to content

HTTP 상태 코드 해설

자주 쓰는 HTTP 응답 상태 코드를 클래스별로 정리했습니다. 의미와 언제 보게 되는지 담았습니다. HTTP 상태 코드 도구의 빠른 참조 판입니다.

HTTP 상태 코드는 하나의 패턴을 공유합니다. 첫 자릿수가 클래스를 정하고 나머지는 세부 사항입니다. 1xx는 정보, 2xx는 성공, 3xx는 리다이렉션, 4xx는 클라이언트 오류, 5xx는 서버 실패를 뜻합니다. 첫 자릿수부터 읽으세요. 함께 제공되는 도구로 개별 코드를 깊이 찾아볼 수 있습니다.

55 of 55 rows
1xx 정보 응답
Continue서버가 요청 헤더를 받았고 클라이언트는 본문을 보내도 됩니다.큰 본문을 업로드하기 전 사전 점검 후.
Switching Protocols서버가 클라이언트가 요청한 프로토콜 전환에 동의합니다.HTTP 연결을 WebSocket으로 업그레이드할 때.
Processing서버가 요청을 받았고 여전히 처리 중입니다.WebDAV 서버가 긴 요청을 확인해 클라이언트 타임아웃을 막을 때.
Early Hints서버가 최종 응답이 준비되기 전에 예비 헤더를 보냅니다.페이지가 렌더링되는 동안 브라우저가 에셋을 미리 로드하게 할 때.
2xx 성공
OK요청이 성공했고 응답 본문이 결과를 담습니다.GET 또는 PUT의 표준 성공.
Created요청이 성공했고 새 리소스가 생성되었습니다.무언가를 만드는 POST가 성공한 후 반환.
Accepted요청이 처리를 위해 접수되었지만 아직 끝나지 않았습니다.오래 걸리는 작업이 시작되어 비동기로 실행될 때.
Non-Authoritative Information요청은 성공했지만 돌려준 데이터가 경로에서 변환되었습니다.프록시나 캐시가 원본이 아닌 수정된 메타데이터를 제공할 때.
No Content요청이 성공했고 돌려줄 본문이 없습니다.DELETE 성공, 또는 알릴 내용이 없는 PUT.
Reset Content요청이 성공했고 클라이언트는 보낸 뷰를 리셋해야 합니다.폼 제출 후 페이지에 필드 지우기를 지시할 때.
Partial Content서버가 요청한 대로 리소스의 일부만 돌려줍니다.Range 요청의 바이트 범위를 제공할 때.
3xx 리다이렉션
Moved Permanently리소스에 영구적인 새 URL이 있고 이후 요청은 그것을 사용해야 합니다.페이지가 이동해 검색 엔진이 색인을 갱신해야 할 때.
Found리소스가 일시적으로 다른 URL에 있지만 원래 URL을 계속 쓰세요.잠시 로그인 페이지로 리다이렉트할 때.
See Other답이 다른 URL에 있고 GET으로 가져와야 합니다.PRG 패턴: POST를 결과 페이지로 리다이렉트해 새로고침 재제출을 막음.
Not Modified캐시된 사본이 여전히 유효해 서버가 본문을 보내지 않습니다.클라이언트 캐시가 최신인 조건부 GET.
Use Proxy요청을 응답에 지정된 프록시를 통해 보내야 합니다.레거시 프록시 네트워크. 2011년부터 사용 중단.
Temporary Redirect리소스가 일시적으로 다른 곳에 있고 원래 요청 메서드를 유지해야 합니다.302와 같지만 리다이렉트에서 POST는 POST로 유지됨.
Permanent Redirect리소스에 영구적인 새 URL이 있고 원래 요청 메서드를 유지해야 합니다.301과 같지만 리다이렉트에서 POST는 POST로 유지됨.
4xx 클라이언트 오류
Bad Request잘못된 구문 때문에 서버가 요청을 이해하지 못했습니다.잘못된 JSON, 또는 누락된 필수 필드.
Unauthorized인증이 필요한데 없었거나 실패했습니다.토큰 없음, 또는 유효하지 않거나 만료된 토큰.
Payment Required요청에 결제가 필요하지만 사양은 방법을 정의한 적이 없습니다.일부 API가 유료벽 표시로 사용. 대부분은 쓰지 않음.
Forbidden클라이언트는 인증되었지만 이 리소스 접근은 허용되지 않습니다.유효한 로그인이지만 이 리소스에 대한 권한이 없을 때.
Not Found서버에 이 URL의 리소스가 없습니다.알 수 없는 URL 또는 존재하지 않는 ID.
Method Not AllowedURL은 존재하지만 사용된 요청 메서드를 허용하지 않습니다.GET만 받는 엔드포인트에 대한 POST.
Not Acceptable서버가 클라이언트의 Accept 헤더에 맞는 콘텐츠를 반환할 수 없습니다.클라이언트는 XML만 요청했지만 API는 JSON만 반환할 때.
Proxy Authentication Required클라이언트는 요청이 계속되기 전에 프록시에서 인증해야 합니다.회사 프록시가 인증되지 않은 요청을 거부할 때.
Request Timeout클라이언트가 요청을 너무 오래 보내서 서버가 포기했습니다.본문이 다 도착하기 전에 멈춘 업로드.
Conflict요청이 리소스의 현재 상태와 충돌합니다.중복 이메일 또는 같은 레코드에 대한 편집 경쟁.
Gone리소스가 한때 존재했지만 영구적으로 제거되었습니다.의도적으로 폐기된 엔드포인트. 404보다 강함.
Length Required요청에 Content-Length 헤더가 필요한데 없습니다.크기를 미리 알아야 하는 서버가 스트리밍 본문을 거부할 때.
Precondition FailedIf-Match 같은 헤더 사전 조건이 거짓으로 평가되었습니다.클라이언트가 읽은 후 레코드가 변경된 낙관적 편집.
Content Too Large요청 본문이 서버가 허용하는 한도를 초과합니다.서버의 최대 본문 크기보다 큰 업로드.
URI Too Long요청 URL이 서버가 해석하려는 길이보다 깁니다.폼이 실수로 GET 쿼리 문자열로 직렬화되어 끝없이 커진 경우.
Unsupported Media Type요청 본문 형식이 엔드포인트가 받는 것이 아닙니다.JSON 전용 엔드포인트에 Content-Type text/plain으로 POST.
Range Not SatisfiableRange 헤더의 바이트 범위가 리소스에 맞지 않습니다.다운로드 재개 시 파일 끝을 넘은 바이트를 요구할 때.
Expectation Failed서버가 Expect 헤더에 명시된 기대를 충족할 수 없습니다.서버가 100-continue 기대를 거부할 때.
I'm a teapot서버는 찻주전자이고 커피 끓이기를 거부합니다.죽지 않는 1998년 만우절 농담. API가 재미로 반환.
Misdirected Request요청이 그에 대한 응답을 만들 수 없는 서버로 보내졌습니다.재사용된 연결이 이 서버가 서비스하지 않는 호스트로 향할 때.
Unprocessable Entity요청은 잘 구성되었지만 값이 의미 검증에 실패합니다.필드가 비즈니스 규칙을 위반하는 유효한 JSON.
Too Early서버가 재생 공격 위험이 있는 요청을 거부합니다.키 회전 전 재시도된 비멱등 요청 거부.
Upgrade Required이 리소스를 쓰려면 클라이언트가 다른 프로토콜로 전환해야 합니다.TLS나 WebSocket을 요구하는 엔드포인트.
Precondition Required서버가 요청이 보내지 않은 조건부 헤더를 요구합니다.손실된 업데이트를 막으려 If-Match를 요구하는 API.
Too Many Requests클라이언트가 주어진 시간 창에 너무 많은 요청을 보냈습니다.속도 제한 도달. 백오프 후 재시도.
Request Header Fields Too Large하나 이상의 헤더 필드가 처리하기에 너무 큽니다.커져서 사이트의 모든 요청을 막은 쿠키나 토큰.
Unavailable For Legal Reasons리소스가 삭제 요청이나 지역 제한 같은 법적 이유로 차단되었습니다.정부 삭제 요청 또는 한 나라에서 차단된 페이지.
5xx 서버 오류
Internal Server Error서버가 예기치 못한 상태에 부딪혀 실패했습니다.서버의 처리되지 않은 예외나 버그.
Not Implemented서버가 요청된 메서드나 기능을 지원하지 않습니다.엔드포인트가 선언만 되고 아직 만들어지지 않은 경우.
Bad Gateway게이트웨이나 프록시가 상위 서버에서 잘못된 응답을 받았습니다.리버스 프록시가 백엔드에 도달하지 못할 때.
Service Unavailable서버가 일시적으로 요청을 처리할 수 없습니다.유지 보수, 과부하, 또는 의존 서비스 다운.
Gateway Timeout게이트웨이나 프록시가 상위 서버에서 제때 응답을 받지 못했습니다.백엔드가 너무 느려 프록시가 포기할 때.
HTTP Version Not Supported서버가 요청의 HTTP 버전을 지원하지 않습니다.서버가 배운 적 없는 프로토콜 버전을 쓰는 클라이언트.
Variant Also Negotiates투명 콘텐츠 협상이 순환 참조로 끝났습니다.실험적 콘텐츠 협상을 하는 잘못 구성된 서버.
Insufficient Storage서버가 요청을 완료하는 데 필요한 표현을 저장할 수 없습니다.할당된 저장소가 가득 찬 WebDAV 서버.
Loop Detected서버가 요청 처리 중 무한 루프에 걸렸습니다.자기 자신을 참조하는 WebDAV 바인딩.
Network Authentication Required접근하려면 클라이언트가 네트워크에서 인증해야 합니다.호텔이나 공항의 캡티브 포털이 요청을 가로챌 때.