HTTP 상태 코드
HTTP 상태 코드(200·301·404·500 등)를 쉬운 설명과 함께 검색하는 레퍼런스. 브라우저 처리.
1xx 정보 응답
2xx 성공
3xx 리디렉션
4xx 클라이언트 오류
5xx 서버 오류
🔒 정적 레퍼런스입니다 — 업로드되지 않습니다.
HTTP 상태 코드 찾아보기
번호(예: 404)나 이름(예: Not Found)으로 검색해 상태 코드의 의미를 확인하세요. 카테고리별로
색이 구분됩니다: 1xx 정보, 2xx 성공, 3xx 리다이렉션, 4xx 클라이언트 오류, 5xx 서버 오류. 정적 레퍼런스라 업로드되지
않습니다.
다섯 가지 카테고리
2xx는 요청 성공, 3xx는 리다이렉션, 4xx는 클라이언트 실수(잘못된 URL 등), 5xx는 서버 실패를 뜻합니다.
첫 자리가 전부입니다
1xx는 "아직 진행 중", 2xx는 "됐다", 3xx는 "다른 데를 봐라", 4xx는 "네가 잘못 보냈다", 5xx는 "우리가 잘못했다" 입니다. 장애 때 중요한 건 마지막 구분입니다. 4xx가 쌓이면 클라이언트나 크롤러, 연동 쪽이 이상한 걸 보내는 것이고, 5xx가 쌓이면 우리 쪽입니다. 팀이 실수로 넘는 선이기도 합니다. 본문에 오류 메시지를 담고 200을 돌려주면 모든 모니터·캐시·재시도 정책이 요청이 성공했다고 믿습니다. 망가진 엔드포인트가 안 보이게 되는 가장 흔한 경로입니다.
사람들이 헷갈리는 짝들
301과 302. 301은 영구이고 브라우저가 강하게 캐시합니다. 프로필을 지울 때까지 남는 경우가 많고, 어떤 헤더로도 확실히 되돌릴 수 없습니다. 아직 정하는 중이라면 302나 307을 쓰고, 301은 정말 영원할 때만 쓰세요. 401과 403. 401은 "당신이 누군지 모르겠으니 인증해 보라", 403은 "누군지 정확히 알지만 그래도 안 된다"입니다. 권한 문제에 401을 보내면 클라이언트가 빠져나올 수 없는 로그인 루프에 들어갑니다. 404와 410. 410은 의도적으로 없앴다는 뜻이라, 크롤러가 404보다 훨씬 빨리 목록에서 내립니다.
자주 묻는 질문
301과 302의 차이는?
301은 영구 리다이렉트(링크를 갱신하세요), 302는 일시 리다이렉트(원래 URL을 계속 사용)입니다.
404는 무슨 뜻인가요?
Not Found — 서버가 해당 URL에서 요청한 리소스를 찾지 못했다는 뜻입니다.
415는 무슨 뜻인가요?
Unsupported Media Type — 요청의 Content-Type을 서버가 지원하지 않아 거부했다는 뜻입니다(POST·업로드 실패의 흔한 원인).
500은 무슨 뜻인가요?
Internal Server Error — 서버 쪽에서 문제가 생겼다는 일반적인 메시지입니다.
301과 302 중 무엇을 써야 하나요?
영구 이동이 확실하지 않다면 302(또는 메서드를 보존하는 307)입니다. 브라우저가 301을 공격적으로 캐시하고 되돌릴 확실한 방법이 없어, 잘못 보낸 301은 실수보다 몇 달을 더 삽니다.
401과 403은 어떻게 다른가요?
401은 인증이 안 됐다는 뜻입니다. 자격증명이 없거나 잘못됐으니 다시 시도하라는 것이죠. 403은 인증은 됐지만 거부한다는 뜻입니다. 권한 문제에 401을 쓰면 클라이언트가 로그인 루프에 빠집니다.
본문에 오류를 담고 200을 줘도 되나요?
거의 안 됩니다. 위에 얹은 프로토콜이 자체 상태를 정의하는 일부 RPC 방식 정도가 예외입니다. 그 외에는 경로상의 모든 캐시·모니터·재시도 정책에서 실패가 감춰집니다. 그것들은 본문이 아니라 상태 줄을 읽습니다.
418은 뭔가요?
1998년 만우절 농담 RFC에 정의된 찻주전자 코드로, 실제 상태 코드였던 적이 없습니다. 지금도 구현한 서버가 있지만 무엇도 여기에 의존해서는 안 됩니다.