다해봄

HTTP 상태 코드표

이 HTTP 오류 코드는 무슨 뜻이고 왜 날까?

404 는 찾을 수 없음, 500 은 서버 내부 오류입니다(RFC 9110).

RFC 9110 (2022) 기준 · HTTP Semantics 15장 · 업데이트

-

상태 코드 전체

코드뜻
100계속 Continue
요청 머리를 받았으니 본문을 보내도 된다는 뜻. Expect: 100-continue 를 보낸 큰 업로드에서 봅니다
101프로토콜 바꿈 Switching Protocols
Upgrade 요청을 받아들여 WebSocket 등으로 바꿀 때
103미리 알림 Early Hints
최종 응답 전에 Link 헤더로 CSS·폰트를 미리 받게 할 때 (RFC 8297)
200성공 OK
요청이 성공했습니다. 가장 흔한 응답
201만들어짐 Created
POST·PUT 으로 새 리소스를 만들었습니다. Location 헤더에 새 주소
202접수됨 Accepted
요청은 받았지만 처리는 아직(비동기 작업 대기열 등)
203변형된 정보 Non-Authoritative Information
중간 프록시가 원래 응답을 고쳐서 보냈습니다
204내용 없음 No Content
성공했지만 돌려줄 본문이 없습니다. 삭제·저장 API 에서 흔함
205화면 초기화 Reset Content
성공했으니 입력 폼을 비우라는 뜻
206일부 내용 Partial Content
Range 요청에 파일 일부만 보냈습니다. 동영상 재생·이어받기
300여러 선택 Multiple Choices
고를 수 있는 표현이 여럿입니다 (잘 쓰지 않음)
301영구 이동 Moved Permanently
주소가 영구히 바뀌었습니다. 검색엔진도 새 주소로 옮깁니다. POST 가 GET 으로 바뀔 수 있음
302임시 이동 Found
잠시 다른 주소로 보냅니다. 로그인 뒤 돌려보내기 등. POST 가 GET 으로 바뀔 수 있음
303다른 곳 보기 See Other
POST 처리 뒤 결과 페이지를 GET 으로 보라는 뜻 (새로고침 중복 제출 방지)
304바뀌지 않음 Not Modified
캐시한 것을 그대로 쓰라는 뜻. If-None-Match·If-Modified-Since 요청에
307임시 이동(방식 유지) Temporary Redirect
302 와 같지만 POST 는 POST 그대로 다시 보냅니다
308영구 이동(방식 유지) Permanent Redirect
301 과 같지만 요청 방식과 본문을 그대로 유지합니다
400잘못된 요청 Bad Request
요청 모양이 틀렸습니다. JSON 문법 오류·필수 값 빠짐 등
401인증 필요 Unauthorized
로그인(인증)이 없거나 토큰이 만료됐습니다. WWW-Authenticate 헤더와 함께
402결제 필요 Payment Required
나중을 위해 남겨 둔 코드. 일부 서비스가 결제 필요로 씁니다
403금지됨 Forbidden
누구인지는 알지만 권한이 없습니다. 다시 로그인해도 안 됨
404찾을 수 없음 Not Found
그 주소에 리소스가 없습니다. 주소 오타·삭제된 페이지
405허용 안 된 방식 Method Not Allowed
그 주소는 이 방식(GET·POST 등)을 받지 않습니다. Allow 헤더에 가능한 방식
406받을 수 없는 형식 Not Acceptable
Accept 헤더가 원하는 형식으로 줄 수 없습니다
407프록시 인증 필요 Proxy Authentication Required
중간 프록시에 먼저 로그인해야 합니다
408요청 시간 초과 Request Timeout
요청을 다 보내기 전에 서버가 기다리다 끊었습니다
409충돌 Conflict
지금 상태와 부딪힙니다. 같은 아이디로 가입·동시에 수정 등
410사라짐 Gone
일부러 영구 삭제했습니다. 404 보다 분명한 표시
411길이 필요 Length Required
Content-Length 헤더가 있어야 합니다
412전제 조건 실패 Precondition Failed
If-Match 같은 조건이 맞지 않습니다 (낙관적 잠금)
413본문이 너무 큼 Content Too Large
업로드가 서버 한도보다 큽니다 (옛 이름 Payload Too Large)
414주소가 너무 김 URI Too Long
주소(쿼리 포함)가 너무 깁니다. 긴 값은 POST 본문으로
415지원 안 되는 형식 Unsupported Media Type
Content-Type 이 맞지 않습니다. JSON 을 보내며 헤더를 빠뜨림 등
416범위 잘못됨 Range Not Satisfiable
Range 요청이 파일 크기를 벗어났습니다
417기대 실패 Expectation Failed
Expect 헤더 요구를 들어줄 수 없습니다
418쓰지 않음(찻주전자) (Unused) I'm a teapot
만우절 농담(RFC 2324)에서 온 코드. RFC 9110 은 쓰지 않는 번호로 남겨 둡니다
421잘못 온 요청 Misdirected Request
이 서버가 답할 수 없는 호스트로 온 요청 (HTTP/2 연결 재사용 등)
422처리할 수 없는 내용 Unprocessable Content
모양은 맞지만 값이 규칙에 어긋납니다. 입력 검증 실패에 흔함
425너무 이름 Too Early
재전송 공격 위험이 있어 TLS 0-RTT 요청을 처리하지 않습니다 (RFC 8470)
426업그레이드 필요 Upgrade Required
다른 프로토콜(예: 새 TLS)로 바꿔야 합니다
428전제 조건 필요 Precondition Required
덮어쓰기 충돌을 막으려 If-Match 같은 조건 헤더를 요구합니다 (RFC 6585)
429요청이 너무 많음 Too Many Requests
정해진 시간에 너무 많이 요청했습니다(속도 제한). Retry-After 만큼 기다리세요 (RFC 6585)
431헤더가 너무 큼 Request Header Fields Too Large
쿠키가 너무 쌓였을 때 흔합니다 (RFC 6585)
451법적 이유로 막힘 Unavailable For Legal Reasons
법원 명령·검열 등 법적 이유로 보여 줄 수 없습니다 (RFC 7725)
500서버 내부 오류 Internal Server Error
서버 코드가 예상하지 못한 오류를 냈습니다. 서버 로그를 보세요
501구현 안 됨 Not Implemented
서버가 이 요청 방식을 아예 지원하지 않습니다
502게이트웨이 오류 Bad Gateway
앞단(프록시·로드밸런서)이 뒤 서버에서 잘못된 응답을 받았습니다. 앱 서버가 죽었을 때 흔함
503서비스 이용 불가 Service Unavailable
점검·과부하로 잠시 처리할 수 없습니다. Retry-After 헤더와 함께
504게이트웨이 시간 초과 Gateway Timeout
앞단이 뒤 서버 응답을 기다리다 시간을 넘겼습니다. 느린 쿼리·외부 API
505HTTP 버전 미지원 HTTP Version Not Supported
요청한 HTTP 버전을 지원하지 않습니다
511네트워크 인증 필요 Network Authentication Required
공공 와이파이 로그인 화면(캡티브 포털) (RFC 6585)

1xx 정보 · 2xx 성공 · 3xx 이동 · 4xx 클라이언트 오류 · 5xx 서버 오류

결과가 이상한가요?
어떤 점인지 골라 주시면 확인해서 고치겠습니다. 넣은 숫자는 보내지 않습니다.

자세히 알려 주실 내용은 [email protected] 로 보내 주세요.

어떻게 계산했나요

RFC 9110 (2022) 기준 · HTTP Semantics 15장

  • RFC 9110 HTTP Semantics(2022년 6월) 15장의 상태 코드와 이름. 413·422 는 RFC 9110 의 새 이름(Content Too Large·Unprocessable Content)
  • RFC 9110 밖의 자주 보는 코드: 103(RFC 8297), 425(RFC 8470), 428·429·431·511(RFC 6585), 451(RFC 7725)
  • 418 은 RFC 9110 이 쓰지 않는 번호로 남겨 둔 것 (RFC 2324 농담에서 유래)
  • 뜻풀이·예는 다해봄이 쉬운 말로 줄인 것입니다. 정확한 정의는 RFC 원문을 보세요

자주 묻는 질문

401 과 403 은 어떻게 다른가요?

401 Unauthorized 는 '누구인지 모름'입니다. 로그인하지 않았거나 토큰이 만료돼 인증이 필요할 때입니다. 403 Forbidden 은 '누구인지는 알지만 권한 없음'이라 다시 로그인해도 안 됩니다.

301·302·307·308 은 언제 쓰나요?

영구히 옮겼으면 301 이나 308, 잠시 보내는 것이면 302 나 307 입니다. 301·302 는 브라우저가 POST 를 GET 으로 바꿀 수 있고, 307·308 은 방식과 본문을 그대로 유지합니다. 검색엔진에 새 주소를 알리려면 영구 이동(301·308)을 씁니다.

502 와 504 는 무엇이 다른가요?

둘 다 앞단(프록시·로드밸런서·CDN)이 뒤 서버와 이야기하다 생긴 오류입니다. 502 는 뒤 서버에서 잘못된 응답을 받았을 때(앱이 죽음 등), 504 는 응답을 기다리다 시간을 넘겼을 때(느린 쿼리·외부 API)입니다.

400 과 422 는?

400 은 요청 모양 자체가 틀렸을 때(JSON 문법 오류 등), 422 는 모양은 맞지만 값이 규칙에 어긋날 때(이메일 형식이 틀림 등)입니다. 둘 다 RFC 9110 에 있습니다.

기준이 무엇인가요?

HTTP 의 뜻을 정한 RFC 9110(HTTP Semantics, 2022년 6월) 15장입니다. 429·431·511(RFC 6585), 451(RFC 7725), 103(RFC 8297), 425(RFC 8470)처럼 다른 RFC 에서 정한 자주 보는 코드는 출처를 따로 적었습니다.