HTTP 상태코드 정리표

HTTP/1.1 표준 상태코드를 분류별로 정리했습니다. 자주 쓰는 코드는 굵게 표시되어 있습니다.

HTTP 상태코드 코드ㆍ이름ㆍ설명 정리표
코드이름설명
100Continue요청의 일부를 받았으며, 클라이언트는 계속 요청을 진행해야 합니다.
101Switching Protocols서버가 클라이언트 요청에 따라 프로토콜을 전환합니다(예: WebSocket).
102Processing요청을 받았으나 아직 처리 중임을 나타냅니다(WebDAV).
200OK요청이 성공적으로 처리되었습니다.
201Created요청이 성공적으로 처리되어 새로운 리소스가 생성되었습니다.
202Accepted요청이 접수되었으나 처리는 완료되지 않았습니다.
204No Content요청은 성공했으나 응답 본문이 없습니다.
206Partial Content범위 요청(Range)에 대한 일부 응답입니다.
301Moved Permanently요청한 리소스가 영구적으로 이동되었습니다. SEO에서 가장 많이 쓰입니다.
302Found요청한 리소스가 임시적으로 다른 위치에 있습니다.
303See Other다른 URI에서 GET으로 요청해야 합니다(POST 후 리다이렉트 패턴).
304Not Modified캐시된 버전이 여전히 유효합니다. 본문을 전송하지 않습니다.
307Temporary Redirect임시 리다이렉트. 메소드를 유지합니다.
308Permanent Redirect영구 리다이렉트. 메소드를 유지합니다.
400Bad Request요청 구문이 잘못되어 서버가 처리할 수 없습니다.
401Unauthorized인증이 필요합니다. 로그인되지 않았거나 토큰이 유효하지 않습니다.
403Forbidden인증은 됐지만 해당 리소스에 접근할 권한이 없습니다.
404Not Found요청한 리소스를 찾을 수 없습니다.
405Method Not Allowed허용되지 않은 HTTP 메소드입니다.
408Request Timeout요청 시간이 초과되었습니다.
409Conflict요청이 현재 서버 상태와 충돌합니다.
410Gone요청한 리소스가 영구적으로 삭제되었습니다.
413Payload Too Large요청 본문이 너무 큽니다. RFC 9110에서 명칭이 Content Too Large로 변경됐습니다(기존 명칭도 통용).
415Unsupported Media Type지원하지 않는 미디어 타입입니다.
418I'm a teapot농담 코드(RFC 2324). 실제 표준은 아닙니다.
422Unprocessable Entity요청 형식은 맞지만 의미적으로 처리할 수 없습니다(검증 실패 등). RFC 9110에서 명칭이 Unprocessable Content로 변경됐습니다(기존 명칭도 통용).
429Too Many Requests요청 횟수가 제한을 초과했습니다(Rate Limit).
500Internal Server Error서버 내부 오류가 발생했습니다.
501Not Implemented요청한 기능을 서버가 지원하지 않습니다.
502Bad Gateway게이트웨이/프록시가 백엔드로부터 잘못된 응답을 받았습니다.
503Service Unavailable서버가 일시적으로 요청을 처리할 수 없습니다(과부하ㆍ점검).
504Gateway Timeout게이트웨이/프록시가 백엔드 응답을 기다리는 동안 시간이 초과되었습니다.
505HTTP Version Not Supported요청한 HTTP 버전을 서버가 지원하지 않습니다.

상태코드 분류

흔히 헷갈리는 상태 코드 페어

의미가 비슷해 보이지만 사용처와 의도가 다른 상태 코드 쌍입니다. 스키마 마크업JSON API 설계ㆍ디버깅에서 자주 잘못 사용됩니다.

200 OK vs 204 No Content

301 vs 302 vs 307 vs 308 - 리다이렉트 4종

401 Unauthorized vs 403 Forbidden

404 Not Found vs 410 Gone

500 vs 502 vs 503 vs 504 - 서버 오류 4종

400 Bad Request vs 422 Unprocessable Entity

자주 묻는 질문

401과 403의 차이는 무엇인가요?
401(Unauthorized)은 인증이 필요한 상태(로그인 안 됨), 403(Forbidden)은 인증은 됐지만 권한이 없는 상태입니다.
301과 302의 차이는 무엇인가요?
301(Moved Permanently)은 영구 이동, 302(Found)는 임시 이동입니다. SEO에서는 영구 이동인 경우 301을 써야 검색엔진이 새 URL의 권위를 이전합니다.
500과 502의 차이는 무엇인가요?
500(Internal Server Error)은 서버 내부 오류, 502(Bad Gateway)는 게이트웨이/프록시가 백엔드 서버로부터 잘못된 응답을 받았을 때 발생합니다.
418 I'm a teapot이 진짜 표준인가요?
1998년 만우절에 정의된 농담 RFC(RFC 2324)이지만 실제로 IANA에 등록된 코드입니다. 표준 사용은 아니며 일부 서비스가 이스터에그로 활용합니다.