AG
HTTP
HTTP Reference
상태코드
메서드
헤더
MIME
인증
지시어
용어
가이드
한국어
English
홈
/
상태코드
/
4xx
4xx
클라이언트 오류 (Client Error)
1xx부터 5xx까지 모든 응답 상태코드. 각 코드의 의미·발생 상황·원인·해결·예시를 확인하세요.
400
Bad Request
자주 쓰임
400 Bad Request는 요청이 잘못되어 서버가 처리할 수 없음을 나타내는 범용 클라이언트 오류입니다. 구문이 깨진 본문, 잘못된 프레이밍, 기본 검증 실패 등 요청 자체에 문제가 있을 때 반환됩니다.
401
Unauthorized
자주 쓰임
401 Unauthorized는 인증이 필요한데 자격 증명이 없거나 잘못되어 요청이 거부되었음을 뜻합니다. 이름은 "Unauthorized"지만 실제 의미는 "인증되지 않음(unauthenticated)"으로, 서버가 요청자의 신원을 확인하지 못한 상태입니다.
402
Payment Required
402 Payment Required는 원래 미래 사용을 위해 예약(reserved)된 코드로, HTTP 표준에서 공식적으로 확정된 용법은 없습니다. 그럼에도 일부 API·SaaS는 유료 결제나 크레딧 충전이 필요함을 알리는 용도로 실용적으로 사용합니다.
403
Forbidden
자주 쓰임
403 Forbidden은 서버가 요청을 이해했지만 권한이 없어 처리를 거부한다는 뜻입니다. 401과 달리 신원 확인(인증)은 되었을 수 있으나, 그 신원에게 이 리소스에 대한 권한(인가)이 없는 상태이므로 다시 로그인해도 해결되지 않습니다.
404
Not Found
자주 쓰임
404 Not Found는 서버가 요청한 리소스를 찾을 수 없음을 나타내는, 가장 널리 알려진 상태 코드입니다. URL은 서버에 도달했지만 그 경로에 대응하는 리소스가 존재하지 않을 때 반환됩니다.
405
Method Not Allowed
자주 쓰임
405 Method Not Allowed는 서버가 요청의 HTTP 메서드 자체는 알지만, 해당 리소스에 대해서는 그 메서드를 허용하지 않을 때 반환됩니다. 예를 들어 POST만 받는 엔드포인트에 GET을 보내는 경우입니다.
406
Not Acceptable
406 Not Acceptable은 서버가 요청의 Accept 계열 헤더가 요구하는 형식으로 응답을 만들 수 없을 때 반환됩니다. 즉 콘텐츠 협상(content negotiation)이 실패한 상황입니다.
407
Proxy Authentication Required
407 Proxy Authentication Required는 요청을 계속 진행하기 전에 중간 프록시에 대한 인증이 필요함을 뜻합니다. 401이 원본 서버에 대한 인증을 요구하는 것과 달리, 407은 클라이언트와 서버 사이의 프록시가 자격 증명을 요구하는 것입니다.
408
Request Timeout
408 Request Timeout은 서버가 클라이언트로부터 완전한 요청을 받기까지 기다리다가 제한 시간을 넘겨 연결을 정리했음을 뜻합니다. 클라이언트가 요청 라인·헤더·본문을 너무 느리게 보내는 것이 원인입니다.
409
Conflict
자주 쓰임
409 Conflict는 요청이 리소스의 현재 상태와 충돌하여 처리할 수 없음을 나타냅니다. 요청 자체는 형식적으로 유효하지만, 서버의 현재 상태와 양립할 수 없는 변경을 시도할 때 반환됩니다.
410
Gone
410 Gone은 리소스가 영구적으로 삭제되었고 대체 주소도 없다는 것을 명확히 선언하는 상태 코드입니다. 404 Not Found가 "지금은 못 찾겠다"라는 다소 모호한 신호라면, 410은 "여기에 있었지만 의도적으로 영구히 제거했으며 다시 돌아오지 않는다"는 확정적인 신호입니다.
411
Length Required
411 Length Required는 서버가 요청 본문의 크기를 미리 알아야 하는데 Content-Length 헤더가 없어서 처리를 거부한다는 뜻입니다. 서버가 chunked transfer encoding을 지원하지 않거나, 정책상 본문 길이를 명시하도록 요구할 때 발생합니다.
412
Precondition Failed
412 Precondition Failed는 요청 헤더에 담긴 전제 조건(If-Match, If-Unmodified-Since 등)이 서버에서 거짓으로 평가되어 요청을 수행하지 않았음을 뜻합니다. 주로 낙관적 동시성 제어(optimistic concurrency)에서 다른 사람이 먼저 리소스를 수정한 경우 발생합니다.
413
Content Too Large
413 Content Too Large(옛 이름 Payload Too Large)는 요청 본문이 서버가 처리하도록 허용한 크기 한도를 넘어섰다는 뜻입니다. 파일 업로드, 대용량 JSON, base64 인코딩된 데이터 전송에서 흔히 만납니다.
414
URI Too Long
414 URI Too Long은 요청한 URI가 서버가 해석할 수 있는 최대 길이를 넘었다는 뜻입니다. 대부분 GET 쿼리 스트링에 너무 많은 데이터를 실었을 때 발생합니다.
415
Unsupported Media Type
415 Unsupported Media Type는 요청 본문의 형식(Content-Type)을 서버가 지원하지 않아 거부했다는 뜻입니다. 예를 들어 JSON만 받는 엔드포인트에 XML이나 text/plain을 보내면 발생합니다.
416
Range Not Satisfiable
416 Range Not Satisfiable는 클라이언트가 Range 헤더로 요청한 바이트 구간이 리소스의 실제 크기를 벗어났다는 뜻입니다. 예를 들어 5MB 파일에서 100MB 지점의 바이트를 요구하면 발생합니다.
417
Expectation Failed
417 Expectation Failed는 요청의 Expect 헤더에 담긴 기대(가장 흔하게는 Expect: 100-continue)를 서버가 충족할 수 없다는 뜻입니다. 클라이언트는 큰 본문을 보내기 전에 서버가 받아줄지 미리 확인하려고 Expect: 100-continue를 보냅니다.
418
I'm a teapot
418 I'm a teapot는 1998년 만우절 농담으로 정의된 상태 코드입니다(RFC 2324, Hyper Text Coffee Pot Control Protocol). '커피를 내려달라'는 요청을 받은 주전자(teapot)가 '나는 주전자라 커피를 못 만든다'며 거절하는 상황을 표현합니다.
421
Misdirected Request
421 Misdirected Request는 요청이 그 scheme/authority(호스트)에 대한 응답을 만들 수 없는 서버에 도달했다는 뜻입니다. 즉 '잘못 배달된 요청'입니다.
422
Unprocessable Content
자주 쓰임
422 Unprocessable Content(옛 이름 Unprocessable Entity)는 요청의 문법(JSON 구조 등)은 올바르지만 담긴 값이 의미상 잘못되어 처리할 수 없다는 뜻입니다. 이메일 형식 오류, 음수 나이, 필수 필드 누락 같은 검증 실패에 사용됩니다.
423
Locked
423 Locked는 접근하려는 리소스가 잠겨 있어(WebDAV lock) 요청을 수행할 수 없다는 뜻입니다. WebDAV는 협업 편집 시 여러 사용자가 같은 파일을 동시에 덮어쓰지 못하도록 명시적 잠금(LOCK) 메커니즘을 제공합니다.
424
Failed Dependency
424 Failed Dependency는 요청이 의존하고 있던 다른 작업이 먼저 실패했기 때문에, 이 요청도 수행할 수 없다는 뜻입니다. WebDAV의 배치·체인 작업에서 앞 단계가 실패하면 그에 의존하는 뒤 단계에 이 코드가 붙습니다.
425
Too Early
425 Too Early는 서버가 재전송(replay) 위험이 있는 요청을 처리하기를 거부했다는 뜻입니다. TLS 1.3의 0-RTT '이른 데이터(early data)' 기능과 관련이 있습니다.
426
Upgrade Required
426 Upgrade Required는 서버가 현재 프로토콜로는 요청을 처리하지 않으며, 클라이언트가 다른 프로토콜로 전환해야 한다는 뜻입니다. 응답의 Upgrade 헤더에 요구되는 프로토콜이 명시됩니다.
428
Precondition Required
428 Precondition Required는 서버가 이 요청을 반드시 조건부(conditional)로 보내도록 요구한다는 뜻입니다. 클라이언트가 If-Match 같은 전제 조건 헤더 없이 쓰기 요청을 보내면, 서버가 이를 거부하고 조건을 붙이라고 요구합니다.
429
Too Many Requests
자주 쓰임
429 Too Many Requests는 클라이언트가 정해진 시간 안에 너무 많은 요청을 보내 속도 제한(rate limiting)에 걸렸다는 뜻입니다. API 남용·과도한 폴링·봇 트래픽으로부터 서버를 보호하기 위한 코드입니다.
431
Request Header Fields Too Large
431 Request Header Fields Too Large는 요청 헤더가 개별적으로 또는 전체적으로 서버가 허용하는 크기를 넘었다는 뜻입니다. 가장 흔한 범인은 지나치게 커진 쿠키와 비대한 Authorization/커스텀 헤더입니다.
451
Unavailable For Legal Reasons
451 Unavailable For Legal Reasons는 법적 요구(검열, 법원 명령, 정부 규제 등)로 인해 리소스에 접근할 수 없다는 뜻입니다. 코드 번호 451은 정보 검열을 다룬 레이 브래드버리의 소설 『화씨 451』에서 따온 것입니다.