콘텐츠로 건너뛰기

📡 HTTP 상태 코드 검색

HTTP 상태 코드 (1xx~5xx)를 코드 번호나 키워드로 즉시 검색합니다. 각 코드의 의미, 일반적인 원인, 해결 방법을 간결하게 설명합니다.

완전 무료 가입 불필요 브라우저 완결 5 개 언어 다크 모드

📖 자주 걸리는 지점

코드 번호로도 키워드로도 찾을 수 있는 목록입니다. 실제로 당신의 사이트가 어떤 코드를 돌려주는지는 이 목록으로 알 수 없습니다 — 그것은 HTTP 헤더 검사리다이렉트 체인 진단의 몫입니다. 여기서 유념할 점은 상태 코드는 무엇이 일어났는가의 분류이지 누구의 잘못인가의 판정이 아니라는 것입니다. 4xx 와 5xx 의 구분은 어디까지나 출발점이며, 실제로는 서버 오류를 삼키고 200 으로 돌려주는 애플리케이션도 드물지 않습니다.

사례 무슨 일이 일어나는가 어떻게 하면 되는가
404 를 돌려주는 줄 알았는데 200 이었다 페이지를 찾을 수 없습니다라는 겉보기 오류 페이지를 200 으로 돌려주는 상태입니다. 구글은 이를 소프트 404 로 다루고 서치 콘솔에 경고를 냅니다. SPA 로 라우팅을 클라이언트에서만 해결하는 구성, CMS 가 해당 없음 페이지를 템플릿으로 내보내는 구성에서 자주 발생합니다. 상태 행과 본문의 내용을 반드시 일치시킵니다. 존재하지 않는 URL 에는 404, 영구적으로 삭제했다면 410, 점검 중이라면 Retry-After 를 붙인 503 을 돌려주세요. SPA 라도 서버에서 라우트 존재를 판정해 404 의 상태 행만은 올바르게 돌려줄 수 있습니다. 확인은 curl -IHTTP 헤더 검사로. 브라우저 표시만 봐서는 알 수 없습니다.
401 과 403 을 혼동 401 은 당신이 누구인지 모른다, 403 은 누구인지 알고도 허가하지 않는다입니다. 이름이 Unauthorized 와 Forbidden 이라 직관과 반대로 보이지만 401 이 인증, 403 이 인가를 가리킵니다. 로그인한 사용자가 남의 리소스를 건드리려 한 경우에는 403 이 옳고, 401 을 돌려주면 클라이언트는 재로그인을 유도하는 동작을 취해 버립니다. 401 을 돌려줄 때는 WWW-Authenticate 헤더를 반드시 함께 보내세요 — 사양상 필수이며 없으면 엄밀히는 401 로서 부정합니다. 보안상 그 리소스가 존재한다는 것 자체를 숨기고 싶은 경우에는 403 이 아니라 404 를 돌려주는 것이 정석입니다(존재 여부를 흘리지 않기 위해). 관리 화면 URL 이나 남의 주문 ID 등이 해당합니다.
429 를 받고 곧바로 재시도 레이트 리밋에 걸린 직후 그대로 다시 던지면 제한이 더 늘어나고 결국 IP 째 차단됩니다. 여러 클라이언트가 동시에 재시도하면 해제된 순간 일제히 접근이 몰리는 썬더링 허드 문제도 일으킵니다. 5xx 에 대한 무조건 재시도도 마찬가지로, 이미 쓰러진 서버에 추가 부하를 줍니다. Retry-After 헤더가 있으면 반드시 그에 따릅니다(초 수나 HTTP 날짜가 들어 있습니다). 없다면 지수 백오프에 지터(무작위 편차)를 더합니다 — 1s → 2s → 4s → 8s 에 각각 ±50% 의 난수를 곱하는 형태입니다. 지터를 넣지 않으면 동시에 실패한 클라이언트가 계속 동시에 재시도합니다. 재시도해도 되는 것은 408 / 429 / 500 / 502 / 503 / 504 이며, 400 이나 422 같은 입력 오류는 몇 번을 던져도 같습니다.

3xx 는 브라우저에 강하게 캐시됩니다. 특히 301 은 영구적이라고 선언하므로 많은 브라우저가 유효기간 없이 기억하고, 서버에서 설정을 되돌려도 사용자 쪽에서는 계속 전송됩니다. 테스트 중 실수로 301 을 돌려주면 영향을 받은 사용자는 캐시를 지울 때까지 돌아오지 못합니다. 설정이 굳을 때까지는 302307 을 쓰고 확신이 선 뒤에 301 / 308 로 바꾸세요. 리다이렉트 설정에서 가장 되돌리기 어려운 실패 중 하나입니다.

📖 사용법

  1. 1
    코드 번호나 키워드로 검색
    404 같은 번호로도, redirect 나 forbidden 같은 단어로도 찾을 수 있습니다
  2. 2
    의미와 대표적인 원인을 읽기
    4xx 는 요청 측, 5xx 는 서버 측에 원인이 있다는 구분이 먼저 효과적입니다
  3. 3
    대처를 실제 헤더와 대조
    Location / Retry-After / ETag 등은 HTTP 헤더 검사로 실제 값을 확인할 수 있습니다

❓ 자주 묻는 질문

404 와 410 은 어떻게 구분하나요?
410 은 예전에 존재했으나 영구 삭제했다는 선언입니다. 구글은 410 을 받으면 404 보다 빠르게 색인에서 제거합니다. 되살릴 계획이 있다면 404 로 두세요.
502 와 504 의 차이는?
둘 다 프록시가 본 상위의 이상이지만, 502 는 응답이 깨졌거나 연결에 실패한 경우, 504 는 시간 내에 아무것도 오지 않은 경우입니다. 502 면 상위 프로세스의 생존을, 504 면 타임아웃 값과 느린 쿼리를 먼저 보세요.
301 대신 308 을 써야 할 때는?
POST 를 받는 엔드포인트를 옮길 때입니다. 301 과 302 는 브라우저가 POST 를 GET 으로 바꾸는 것이 허용되어 본문이 사라진 요청이 도착합니다. 메서드를 유지하는 308(영구)과 307(일시)을 쓰세요.
🐛 이 도구에서 문제가 발생했나요?

무료 · 가입 불필요. 재현 절차만이라도 도움이 됩니다. 보고는 운영자에게 직접 전달되어 개선에 사용됩니다.

※ 재현을 위해 브라우저 정보 (UA / 화면 / 언어 / URL) 가 자동 전송됩니다