개발자
🌐 HTTP 상태 코드 검색기
HTTP 65+ 상태 코드 한국어 설명·발생 시기·해결 힌트. CORS·JWT·Lambda 시나리오.
⚠️ 본 도구의 HTTP 상태 코드 설명·해결 힌트는 RFC 7231·9110 등 표준 명세와 일반적 운영 경험을 정리한 어림이며, 모든 시나리오를 완전히 커버하지 않습니다. 실제 운영 환경에서 마주친 오류는 서버 로그·DevTools Network 탭·CDN 대시보드 등 추가 진단이 필요합니다. Cloudflare(521·524)·nginx(499) 등 비표준 코드는 해당 벤더의 공식 문서를 우선 참조하세요. 분야별 안전 안내는 면책조항 참고.
ℹ️ Continue
계속
클라이언트가 요청을 계속 보내도 됨
🔀 Switching Protocols
프로토콜 전환
프로토콜 전환 요청 수락 (예: HTTP → WebSocket)
💨 Early Hints
조기 힌트
최종 응답 전 미리 힌트 전송 (preload·preconnect)
✅ OK
성공
요청이 성공적으로 처리되었습니다
🎉 Created
생성됨
POST 요청으로 새 리소스가 생성되었습니다
⏳ Accepted
수락됨
요청은 수락되었지만 처리는 비동기로 진행 중
📭 No Content
본문 없음
성공했지만 응답 본문이 없습니다
📦 Partial Content
부분 콘텐츠
범위(Range) 요청이 성공해 일부 콘텐츠 반환
📊 Multi-Status
다중 상태
WebDAV — 여러 리소스 상태를 한 번에 응답
🔧 IM Used
IM 사용됨
Delta encoding (RFC 3229) — 거의 사용 안됨
🔀 Multiple Choices
여러 선택
여러 응답 후보 중 클라이언트가 선택
🔀 Moved Permanently
영구 이동
리소스가 영구적으로 새 URL로 이동했습니다
↪️ Found
임시 이동
리소스가 임시로 다른 URL에 있습니다
👀 See Other
다른 위치 참조
POST 후 GET으로 결과 페이지 이동 (PRG 패턴)
🔄 Not Modified
수정되지 않음
캐시된 버전이 최신 — 본문 전송 안 함
↪️ Temporary Redirect
임시 리다이렉트
302와 비슷하지만 메서드·본문 그대로 유지
🔀 Permanent Redirect
영구 리다이렉트
301과 비슷하지만 메서드·본문 그대로 유지
❌ Bad Request
잘못된 요청
요청 형식이 잘못되었습니다 (문법 오류·잘못된 JSON 등)
🔐 Unauthorized
인증 필요
인증 정보가 없거나 잘못되었습니다 (실제 의미: 인증 안됨)
💳 Payment Required
결제 필요
결제가 필요합니다 (대부분 미사용)
🚫 Forbidden
금지됨
인증은 됐지만 접근 권한이 없습니다
🔍 Not Found
찾을 수 없음
요청한 리소스를 찾을 수 없습니다
🚷 Method Not Allowed
허용되지 않은 메서드
HTTP 메서드가 허용되지 않습니다 (예: GET 전용에 POST)
🙅 Not Acceptable
허용 불가
Accept 헤더와 호환되는 응답 형식이 없습니다
🔒 Proxy Authentication Required
프록시 인증 필요
프록시 서버 인증이 필요합니다
⏱️ Request Timeout
요청 시간 초과
서버가 요청을 기다리다 시간 초과 (클라이언트가 늦음)
⚔️ Conflict
충돌
리소스 상태 충돌 (예: 중복 등록)
👻 Gone
영구 삭제됨
리소스가 영구적으로 삭제되었습니다 (404와 달리 의도적)
📏 Length Required
Content-Length 필요
Content-Length 헤더가 필요합니다
🚧 Precondition Failed
사전 조건 실패
조건부 요청의 조건 (If-Match·If-None-Match) 실패
📦 Payload Too Large
본문 너무 큼
요청 본문이 서버 허용 한도를 초과했습니다
📏 URI Too Long
URL 너무 김
URL이 서버 허용 한도를 초과했습니다 (보통 8KB+)
📋 Unsupported Media Type
지원 안 되는 형식
Content-Type 형식을 서버가 지원하지 않습니다
📐 Range Not Satisfiable
범위 충족 불가
Range 헤더 범위가 파일 크기를 초과
😞 Expectation Failed
기대 실패
Expect 헤더 기대를 서버가 충족 못함
🫖 I'm a teapot
나는 찻주전자
농담 코드 — RFC 2324 (Hyper Text Coffee Pot Control Protocol)
📋 Unprocessable Entity
처리 불가능한 엔티티
요청 형식은 맞지만 의미적 오류 (Validation 실패)
⏰ Too Early
너무 이름
서버가 재전송될 수 있는 요청을 처리할 의향이 없음 (TLS 0-RTT)
⬆️ Upgrade Required
업그레이드 필요
다른 프로토콜(HTTPS·HTTP/2)로 전환 필요
🔐 Precondition Required
사전 조건 필요
If-Match·If-Unmodified-Since 같은 조건부 헤더 필수
🚦 Too Many Requests
너무 많은 요청
Rate limit 초과 — 너무 많은 요청
📋 Request Header Fields Too Large
헤더 너무 큼
요청 헤더가 서버 허용 크기 초과
⚖️ Unavailable For Legal Reasons
법적 사유로 사용 불가
법적 검열·차단 (지역 제한·DMCA 등)
💥 Internal Server Error
내부 서버 오류
서버 내부에서 알 수 없는 오류 발생
🚧 Not Implemented
구현되지 않음
서버가 요청 메서드를 지원하지 않습니다
🔌 Bad Gateway
게이트웨이 오류
게이트웨이(nginx·CDN)가 백엔드 서버에서 잘못된 응답 받음
🚧 Service Unavailable
서비스 이용 불가
서버가 일시적으로 이용 불가 (점검·과부하)
⏰ Gateway Timeout
게이트웨이 시간 초과
게이트웨이가 백엔드 응답을 기다리다 시간 초과
📜 HTTP Version Not Supported
HTTP 버전 미지원
서버가 요청한 HTTP 버전을 지원 안 함
🔄 Variant Also Negotiates
협상 변형 오류
콘텐츠 협상 순환 참조 (드묾)
💾 Insufficient Storage
저장 공간 부족
WebDAV — 서버 저장 공간 부족
🔁 Loop Detected
루프 감지됨
WebDAV — 무한 루프 감지
🔧 Not Extended
확장 필요
추가 확장이 필요한 요청 (드묾)
📶 Network Authentication Required
네트워크 인증 필요
네트워크 인증 (Wi-Fi 캡티브 포털) 필요
☁️ Web Server Returned an Unknown Error
알 수 없는 오류
Cloudflare — Origin 서버가 빈 응답·잘못된 응답
☁️ Web Server Is Down
Origin 서버 다운
Cloudflare — Origin 서버 다운 (TCP 연결 거부)
☁️ Connection Timed Out
연결 시간 초과
Cloudflare — Origin 서버 TCP 연결 시간 초과
☁️ Origin Is Unreachable
Origin 도달 불가
Cloudflare — Origin 서버에 도달할 수 없음 (DNS·라우팅)
☁️ A Timeout Occurred
응답 시간 초과
Cloudflare — Origin이 100초 내 응답 못함 (504와 비슷)
☁️ SSL Handshake Failed
SSL 핸드셰이크 실패
Cloudflare ↔ Origin SSL/TLS 핸드셰이크 실패
... 첫 60개만 표시 (전체 65개)
🛠️ 어떻게 사용하나요?
- 탭 1 검색 — 코드 번호(404) 또는 키워드(인증·timeout) 입력 → 자동완성 결과 + 큰 상세 카드 + 한국 사이트 사례 + RFC 링크
- 탭 2 카테고리별 — 1xx~5xx + 비표준 한 페이지 전체 보기, 카드 클릭 시 탭 1 상세
- 탭 3 디버깅 — 실제 운영 시나리오 12개 (JWT 401·CORS 405·Lambda 504·CF 521 등) — 원인·단계별 해결
- 탭 4 가이드 — 5+1 카테고리 의미 + 흔한 혼동 5쌍 (401 vs 403, 502 vs 504) + 프레임워크별 응답
💡 ⭐ 즐겨찾기 추가 → localStorage 저장. 빠른 칩 12개로 인기 코드 즉시 접근.
📊 5+1 카테고리 의미 (1xx ~ 5xx + 비표준)
HTTP 상태 코드는 첫 자리 숫자로 의미를 분류합니다. 카테고리만 봐도 성공인지 클라이언트 문제인지 서버 문제인지 즉시 판단 가능.
| 카테고리 | 범위 | 의미 | 대표 |
|---|---|---|---|
| ℹ️ 1xx | 100~199 | Informational (정보) | 100, 101, 103 |
| ✅ 2xx | 200~299 | Success (성공) | 200, 201, 204, 304 |
| ↪️ 3xx | 300~399 | Redirect (리다이렉트) | 301, 302, 307, 308 |
| ⚠️ 4xx | 400~499 | Client Error (클라이언트 오류) | 400, 401, 403, 404, 429 |
| 🚨 5xx | 500~599 | Server Error (서버 오류) | 500, 502, 503, 504 |
| 🔌 비표준 | 벤더 | Cloudflare·nginx 자체 정의 | 521, 524, 499 |
🆚 흔한 혼동 비교 (401 vs 403, 502 vs 504, 301 vs 302)
- 401 vs 403 — 401: 인증 정보 X·만료 (토큰 누락) / 403: 인증은 됐지만 권한 없음 (스코프 부족)
- 301 vs 302 — 301: 영구 이동 (SEO 인덱스 갱신) / 302: 임시 이동 (SEO 영향 X)
- 502 vs 504 — 502: 백엔드 다운·잘못된 응답 / 504: 백엔드 응답 너무 느림 (timeout)
- 200 vs 204 — 200: 성공 + 본문 있음 / 204: 성공 + 본문 없음 (DELETE 후 헤더만)
- 200 vs 201 — 200: 단순 성공 (조회·수정) / 201: 성공 + 새 리소스 생성 (POST + Location 헤더)
📜 표준 vs 비표준 출처
- 📖 표준 RFC: 7231 (HTTP/1.1)·6585 (추가 코드 428·429·431·511)·8297 (103 Early Hints)·7235 (인증)·7232 (조건부)·7538 (308)·7540 (HTTP/2)·4918 (WebDAV)·9110 (HTTP 의미론, 2022 최신)
- ☁️ Cloudflare 5xx (520~530): Cloudflare 자체 정의 — Origin 서버 통신 문제 진단
- 🔌 nginx (444·494·499): nginx 내부 코드 — 클라이언트 종료·헤더 크기·차단
- 🟦 Microsoft IIS: 440 (Login Time-out)·449 (Retry With)·451 (Redirect)
ⓘ 비표준 코드는 해당 벤더 공식 문서를 우선 참조하세요. 본 도구는 운영에서 자주 보이는 비표준 11개를 포함합니다.
🛠️ 프레임워크별 기본 응답 코드 (Spring·Express·FastAPI·Django)
백엔드 프레임워크가 자동으로 반환하는 코드를 알면 디버깅이 빨라집니다.
| 프레임워크 | 패턴·실패 | 기본 응답 |
|---|---|---|
| 🍃 Spring Boot | @PostMapping | 200 (또는 ResponseEntity로 201) |
| 🍃 Spring Boot | @DeleteMapping | 200 (수동 204 권장) |
| 🍃 Spring Boot | @Valid 실패 | 400 Bad Request (자동) |
| 🍃 Spring Boot | @ExceptionHandler 미정의 | 500 Internal |
| 🟢 Express | res.json() | 200 OK |
| 🟢 Express | next(err) (error middleware) | 500 (기본) |
| 🐍 FastAPI | Pydantic validation 실패 | 422 Unprocessable Entity |
| 🐍 FastAPI | HTTPException(404) | 지정 status_code |
| 🐍 Django REST | serializer.is_valid() 실패 | 400 Bad Request |
| 🐍 Django REST | permission_classes 실패 | 403 Forbidden |
자주 묻는 질문 (FAQ)
Q1. 401과 403의 차이는?
가장 흔한 혼동입니다.
• 401 Unauthorized: 인증 정보가 없거나 만료됨 (이름과 달리 "권한 부족"이 아님). 실제 의미는 "Unauthenticated"
• 403 Forbidden: 인증은 됐지만 해당 리소스에 권한 없음 (스코프 부족·IP 차단·CDN 서명 만료)
예시:
• Authorization 헤더 없이 API 호출 → 401 (토큰 자체 없음)
• 일반 사용자 토큰으로 관리자 API 호출 → 403 (토큰은 있지만 권한 부족)
• JWT exp 시간 지남 → 401 (재로그인 필요)
본 도구의 [🔍 검색]에서 401·403을 비교하며 확인 가능.
Q2. 301과 302 어떤 걸 써야 하나요?
SEO·캐시 관점에서 매우 다릅니다.
• 301 Moved Permanently: 영구 이동. 검색엔진이 새 URL로 인덱스 갱신, 브라우저 캐시. SEO 점수 이전.
• 302 Found: 임시 이동. 검색엔진은 원본 URL 유지, 캐시 X
사용 가이드:
• 도메인 영구 변경 (daum.net → kakao.com) → 301
• A/B 테스트·임시 분기·점검 페이지 → 302
• POST → POST 메서드 보존 필요 → 307 (임시) / 308 (영구)
⚠️ 301은 캐시되므로 신중히. 한 번 잘못 설정하면 사용자 브라우저에 영구 캐시.
Q3. 502와 504 차이는?
둘 다 게이트웨이(nginx·CDN) 관련 5xx지만 원인이 다릅니다.
• 502 Bad Gateway: 게이트웨이가 백엔드에서 잘못된 응답 받음 (TCP RST·헤더 깨짐·백엔드 다운)
• 504 Gateway Timeout: 게이트웨이가 백엔드 응답을 기다리다 timeout (백엔드 너무 느림)
구분 방법:
• 백엔드 서비스가 systemctl status에서 active이면 → 504 (응답 느림)
• 백엔드 다운이면 → 502
일반적 원인: 502 - nginx upstream 다운·헬스체크 실패 / 504 - Lambda 30초 초과·DB 슬로우 쿼리·외부 API 무응답
Q4. CORS 오류는 몇 번 코드인가요?
고정된 코드 없음 — 상황에 따라 다릅니다.
• preflight OPTIONS 미응답 → 405 Method Not Allowed 또는 응답 자체 없음
• Allow-Origin 헤더 누락 → 200 OK이지만 브라우저가 차단 (네트워크 탭은 200, 콘솔은 CORS 오류)
• credentials: include + Allow-Origin: * → 200이지만 브라우저 차단
해결: 본 도구의 [🐛 디버깅] 탭에서 "CORS preflight 실패" 시나리오 참조. 핵심: 서버에 Access-Control-Allow-Origin·Allow-Methods·Allow-Headers 설정.
Q5. 429 Too Many Requests 발생 시?
API rate limit 초과. 응답에 따라 대응:
• Retry-After 헤더 확인 (대기 시간 sec) → 그 시간만큼 대기 후 재시도
• X-RateLimit-Remaining·X-RateLimit-Reset 헤더 모니터링
• Exponential backoff 패턴: 1초 → 2초 → 4초 → 8초 (랜덤 지터 추가)
• 캐싱·요청 묶기 (배치)로 호출 줄이기
• API 플랜 업그레이드 (paid tier)
한국 API 한도:
• 네이버 검색: 25,000회/일
• 카카오 메시지: 분당 한도 (계정별 다름)
• OpenAI: tier별 RPM·TPM
• GitHub: 시간당 5000 (인증), 60 (비인증)
Q6. Cloudflare 521·522·524 차이?
모두 Cloudflare ↔ Origin 서버 통신 문제이지만 단계가 다릅니다.
• 521 Web Server Is Down: TCP 연결 거부 — Origin 서버 다운·방화벽이 Cloudflare IP 차단
• 522 Connection Timed Out: TCP 핸드셰이크 timeout — 네트워크 지연·과부하
• 524 A Timeout Occurred: 연결은 됐지만 100초 내 HTTP 응답 못 받음 — Origin 처리 너무 느림
해결:
• 521/522: Origin 서버 상태 확인 + Cloudflare IP 화이트리스트 (cloudflare.com/ips)
• 524: Origin 처리 시간 단축, 비동기 처리, Cloudflare Enterprise는 100초 → 6000초 가능
WebSocket·SSE 장기 연결은 524 자주 발생 → Cloudflare Enterprise 또는 Cloudflare Tunnel 사용.
Q7. 200 vs 204 vs 201 언제 쓰나요?
REST API 설계 시 의도를 명확히:
• 200 OK: 성공 + 응답 본문 있음 — GET·PUT·PATCH 결과 반환
• 201 Created: 성공 + 새 리소스 생성 — POST. Location 헤더 필수 (새 URL)
• 204 No Content: 성공 + 응답 본문 없음 — DELETE 성공 / PUT으로 변경했지만 결과 안 보낼 때 / CORS preflight
실수:
• DELETE 후 200 + 빈 본문 → 잘못 (204가 명확)
• POST 후 200 + 새 리소스 → 잘못 (201 + Location 헤더)
• 204 응답에 response.json() 호출 → 오류 (본문 없음)
Q8. 422 Unprocessable Entity는 언제?
• 400 Bad Request: 구문 오류 (JSON 파싱 실패·콤마 누락)
• 422 Unprocessable Entity: 구문은 맞지만 의미 검증 실패 (이메일 형식 X·필수 필드 빈 값·비즈니스 규칙 위반)
프레임워크 자동 사용:
• FastAPI: Pydantic validation 실패 시 자동 422
• Spring Boot: @Valid 실패 시 기본 400 (수동 422 권장)
• Rails ActiveRecord: validation 실패 시 422
REST 베스트 프랙티스는 422 사용으로 의미 명확화. 응답 본문에 필드별 오류 배열 포함:
{ "detail": [
{ "loc": ["body", "email"], "msg": "invalid email", "type": "value_error.email" }
]}Q9. JWT 만료가 401인가 403인가?
401 Unauthorized가 정답입니다.
• JWT exp 시간 지남 = 인증 정보 만료 = 인증 안 됨 상태 → 401
• 401 응답으로 클라이언트는 refresh_token으로 재발급할 수 있음을 알 수 있음
• 403은 "토큰은 유효한데 권한 부족" (다른 사용자 데이터 접근 등)
실제 동작:
1. JWT 만료 → 서버가 401 + WWW-Authenticate 헤더 응답
2. 클라이언트(axios interceptor 등)가 401 감지
3. refresh_token으로 새 access_token 발급
4. 원래 요청 재시도
일부 잘못된 구현: JWT 만료에 403 반환 — 클라이언트 재시도 로직이 작동 X. 401이 표준.
Q10. 본 도구의 데이터 출처는?
본 도구의 데이터는 다음을 종합한 정보입니다:
• RFC 표준: 7231 (HTTP/1.1), 9110 (최신 의미론, 2022), 7235 (인증), 7232 (조건부), 6585·6566·8297·7538·7540 (확장)
• WebDAV: RFC 4918, 5842
• 비표준 출처:
- Cloudflare 5xx (520·521·522·523·524·525·526·530): Cloudflare 공식 docs
- nginx (444·494·499): nginx 공식 wiki
• 한국 사이트 사례: 카카오·네이버·토스·쿠팡·AWS Lambda 운영 경험
• 해결 힌트: 일반적·검증된 디버깅 단계만 (위험한 워크어라운드 X)
정확한 명세는 외부 RFC·MDN·Cloudflare docs를 우선 참조하세요. 본 도구는 모든 데이터가 정적이며 외부 API 호출 0개.