개발자 도구

HTTP 상태 코드

번호나 이름으로 검색하세요. 각 코드의 의미와 사용 시점을 알려 줍니다.

HTTP 상태 코드 내 기기에서 실행
  • 브라우저에서 실행됩니다 — 입력한 텍스트는 어디로도 전송되지 않습니다
  • 가입 불필요, 사용량 제한 없음, 원하는 만큼 무료로 사용

작동 방식

대부분의 상태 코드는 분명하지만, 몇몇은 정말 헷갈리며 특히 서로 비슷하게 들리는 것들이 그렇습니다. 번호, forbidden 같은 단어, 또는 4xx를 입력하면 한 부류 전체를 볼 수 있습니다.

401과 403, 모두가 헷갈리는 한 쌍

401 Unauthorized는 사실 인증되지 않았다는 뜻입니다. 서버가 누구인지 모르며, 자격 증명을 보내면 해결될 수 있습니다. 403 Forbidden은 서버가 누구인지 정확히 알고 있지만 그래도 허용되지 않는다는 뜻입니다. 이름은 역사적 이유로 붙은 것이라 도움이 되지 않지만, 하나는 로그인을 유도하고 다른 하나는 그렇지 않으므로 구분은 중요합니다.

301과 302, 그리고 SEO에 중요한 이유

301은 영구적이며 순위 신호를 새 주소로 넘깁니다. 302는 임시적이며 신호를 원래 주소에 남깁니다. 영구 이동에 302를 쓰는 것은 흔하면서 조용히 비용이 큰 실수입니다. 307과 308은 메서드가 바뀌지 않는다는 것까지 보장하는 현대적인 대응이며, POST는 POST로 유지됩니다. 301과 302는 역사적으로 그렇지 않았습니다.

검증에는 422

400 Bad Request는 서버가 요청을 전혀 이해할 수 없었다는 뜻입니다. 422 Unprocessable Content는 완벽하게 이해했지만 내용이 잘못되었다는 뜻입니다. 필드가 없거나 올바르지 않은 이메일 같은 경우입니다. 대부분의 API는 검증 실패에 422를 반환해야 하지만 습관적으로 400을 반환합니다.

분류

1xx는 정보, 2xx는 성공, 3xx는 리다이렉션, 4xx는 클라이언트의 잘못, 5xx는 서버의 잘못입니다. 마지막 구분은 장애에서 책임을 가릴 때 쓰는 기준입니다. 4xx가 급증하면 호출하는 쪽이 잘못하고 있는 것이고, 5xx가 급증하면 여러분 쪽의 문제입니다.

418

I'm a teapot은 1998년 만우절 농담에서 비롯되었으며, 구현에서 이를 제거하려는 시도가 반발을 불러일으킨 뒤 진지하게 표준화되었습니다. 실사용을 위한 것은 아니지만 명세의 실제 일부입니다.

자주 묻는 질문

HTTP 상태 코드 — 자주 묻는 질문

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

401은 인증되지 않았다는 뜻으로, 서버가 누구인지 알지 못합니다. 403은 누구인지 알고 있지만 여전히 허용되지 않는다는 뜻입니다.

301과 302 중 무엇을 써야 하나요?

영구 이동에는 301을 쓰며, 순위가 이전됩니다. 임시 이동에는 302를 씁니다. HTTP 메서드가 바뀌면 안 될 때는 308과 307을 쓰세요.

검증 오류에는 어떤 코드를 반환해야 하나요?

422 Unprocessable Content입니다. 400은 요청을 전혀 이해할 수 없었다는 뜻입니다.

418은 실제로 있는 코드인가요?

예. 1998년 만우절 농담에서 시작되었고 실제로 표준화되었지만, 실사용을 위한 것은 아닙니다.

502는 무슨 뜻인가요?

프록시가 뒤에 있는 서버로부터 올바르지 않은 응답을 받았다는 뜻이며, 보통 애플리케이션이 멈췄거나 충돌하고 있는 것입니다.