T90 · 참고
HTTP 상태코드 사전
404, 502, 429… 숫자만 봐서는 무슨 뜻인지 알기 어렵습니다. 코드나 키워드로 검색하면 의미와 함께 어디부터 확인해야 하는지 알려줍니다.
2xx · 성공 요청이 정상 처리됨
- 200
OK 요청 성공.
가장 흔한 정상 응답. GET·POST 모두 사용.
- 201
Created 리소스가 새로 만들어짐.
POST로 생성에 성공했을 때. Location 헤더에 새 주소를 담는 것이 관례.
- 204
No Content 성공했지만 본문이 없음.
DELETE 응답이나 저장만 하고 돌려줄 데이터가 없을 때.
- 206
Partial Content 일부 구간만 전송.
동영상 스트리밍·이어받기(Range 요청)에서 사용.
3xx · 리다이렉션 다른 주소로 이동 필요
- 301
Moved Permanently 주소가 영구히 바뀜.
도메인 이전·URL 구조 변경 시 사용. 검색엔진이 색인을 새 주소로 옮긴다.
- 302
Found 임시로 다른 주소.
원래 주소를 그대로 유지할 때. SEO 관점에서는 301과 구분해서 써야 한다.
- 304
Not Modified 바뀐 게 없으니 캐시를 쓰라.
브라우저 캐시가 최신일 때. 오류가 아니라 정상 동작.
- 308
Permanent Redirect 301과 같지만 메서드 유지.
POST를 GET으로 바꾸지 않고 그대로 넘긴다.
4xx · 클라이언트 오류 요청 쪽에 문제가 있음
- 400
Bad Request 요청 형식이 잘못됨.
필수 파라미터 누락, JSON 문법 오류 등. 먼저 요청 본문을 확인.
- 401
Unauthorized 로그인(인증)이 필요함.
이름과 달리 "인증 안 됨"이라는 뜻. 토큰 만료가 흔한 원인.
- 403
Forbidden 로그인은 됐지만 권한 없음.
401과 헷갈리기 쉬움. 파일 권한·IP 차단·CORS 설정도 원인이 된다.
- 404
Not Found 해당 주소에 아무것도 없음.
오타·삭제된 페이지·잘못된 라우팅. 사이트라면 404 페이지를 따로 만들어 두는 편이 좋다.
- 405
Method Not Allowed 허용되지 않는 메서드.
GET만 받는 곳에 POST를 보낸 경우 등.
- 409
Conflict 현재 상태와 충돌.
중복 가입, 동시 수정 충돌 등.
- 413
Payload Too Large 보낸 데이터가 너무 큼.
업로드 용량 제한. 서버·프록시 양쪽 설정을 함께 확인.
- 422
Unprocessable Content 형식은 맞지만 값이 유효하지 않음.
유효성 검증 실패. 400 대신 쓰는 API가 많다.
- 429
Too Many Requests 요청이 너무 잦음.
API 호출 제한(rate limit). Retry-After 헤더를 보고 기다렸다 재시도.
5xx · 서버 오류 서버 쪽에 문제가 있음
- 500
Internal Server Error 서버 내부에서 알 수 없는 오류.
가장 막연한 오류. 서버 로그를 먼저 봐야 한다.
- 502
Bad Gateway 앞단 서버가 뒷단에서 이상한 응답을 받음.
리버스 프록시(Nginx)와 앱 서버 사이 문제. 앱이 죽었는지부터 확인.
- 503
Service Unavailable 지금은 서비스할 수 없음.
점검 중이거나 과부하. 일시적인 경우가 많다.
- 504
Gateway Timeout 뒷단 응답이 제한 시간 안에 안 옴.
느린 쿼리·외부 API 지연이 흔한 원인.
일치하는 상태코드가 없습니다.
빠르게 판단하는 법
- 앞자리가 4면 보낸 쪽(브라우저·클라이언트 코드), 5면 받는 쪽(서버)을 먼저 의심하세요.
- 401과 403은 다릅니다. 401은 "누구인지 모르겠다", 403은 "누구인지는 알지만 안 된다"입니다.
- 404가 갑자기 늘었다면 리다이렉트(301) 설정이 빠졌는지 확인하세요.
- 여기 실린 것은 실무에서 자주 만나는 코드들이며, 전체 목록은 RFC 9110에 정의돼 있습니다.