달달툴즈

HTTP 상태 코드

HTTP 상태 코드의 뜻을 찾고, 헷갈리는 짝 — 401 과 403, 301 과 308, 400 과 422 — 을 가릅니다.

브라우저에서만 처리무료 이용

어느 쪽으로 넣어도 찾습니다.

46개

코드이유구언제 쓰나
100Continue
101Switching ProtocolsWebSocket 으로 올라갈 때 씁니다.
103Early Hints진짜 응답이 준비되기 전에 미리 불러올 것을 알려 줍니다.
200OK성공한 요청의 기본값입니다.
201Created새 자원이 생겼습니다. Location 헤더로 그 자리를 가리킵니다.
202Accepted줄을 세웠을 뿐 끝나지 않았습니다. 호출한 쪽이 다시 확인해야 합니다.
204No Content성공했고 돌려줄 것이 없습니다. 본문을 넣어도 무시됩니다.
206Partial ContentRange 헤더에 답해 파일의 일부만 보냅니다.
301Moved Permanently영구 이동. 클라이언트가 메서드를 GET 으로 바꿔도 됩니다.
302Found임시. 이쪽도 메서드가 GET 으로 바뀔 수 있습니다.
303See Other결과는 다른 곳에서 가져가라는 뜻이고, 언제나 GET 입니다.
304Not Modified캐시에 있는 것이 아직 쓸 만합니다. 본문을 보내지 않습니다.
307Temporary Redirect302 와 같되 메서드가 그대로 유지됩니다.
308Permanent Redirect301 과 같되 메서드가 그대로 유지됩니다.
400Bad Request요청을 아예 알아들을 수 없었습니다.
401Unauthorized인증되지 않았습니다. 이름과 달리 권한이 아니라 신원 문제입니다.
402Payment Required
403Forbidden누구인지는 알지만 그래도 안 됩니다.
404Not Found그런 자원이 없거나, 있다고 말해 주지 않겠다는 뜻입니다.
405Method Not Allowed경로는 있고 이 동사가 없습니다. 되는 것을 Allow 에 적어 보냅니다.
406Not Acceptable클라이언트가 요구한 형식 중 만들 수 있는 것이 없습니다.
408Request Timeout
409Conflict지금 상태와 부딪칩니다. 키가 겹치는 경우가 대표적입니다.
410Gone일부러 지웠고 돌아오지 않습니다.
411Length Required
412Precondition FailedIf-Match 나 If-None-Match 조건이 맞지 않았습니다.
413Content Too Large본문이 서버가 받는 크기를 넘었습니다.
414URI Too Long
415Unsupported Media TypeContent-Type 이 이 창구가 다루는 형식이 아닙니다.
416Range Not Satisfiable
418I'm a teapot1998년 만우절 농담입니다. 아직 등록부에 남아 있습니다.
422Unprocessable Content형식은 맞는데 뜻이 틀렸습니다. 검증 오류에 흔히 씁니다.
425Too Early
426Upgrade Required
428Precondition Required
429Too Many Requests요청이 잦습니다. 언제 다시 오라고 Retry-After 로 알려 주세요.
431Request Header Fields Too Large
451Unavailable For Legal Reasons삭제 명령 같은 법적 이유로 막혔습니다.
500Internal Server Error처리하지 못한 실패입니다. 아무도 노려서는 안 되는 마지막 그물입니다.
501Not Implemented
502Bad Gateway뒤쪽 서버가 말이 안 되는 것을 돌려줬습니다.
503Service Unavailable내려갔거나 밀렸고, 돌아올 예정입니다.
504Gateway Timeout뒤쪽 서버가 제때 답하지 않았습니다.
505HTTP Version Not Supported
507Insufficient Storage
511Network Authentication Required먼저 로그인하라는 공용 와이파이 같은 관문입니다.

헷갈리는 짝

  • 401403

    401 은 누구인지 모른다는 뜻이고, 403 은 누구인지 알지만 안 된다는 뜻입니다.

  • 301308

    301 은 클라이언트가 POST 를 GET 으로 바꿔도 됩니다. 308 은 메서드를 지킵니다. API 에는 308 을 쓰세요.

  • 302303

    302 는 메서드가 바뀔 수 있고 303 은 언제나 GET 으로 바뀝니다. 폼 전송 뒤에는 303 입니다.

  • 400422

    400 은 본문을 읽지 못한 경우이고, 422 는 읽었는데 내용이 틀린 경우입니다.

  • 404410

    404 는 그런 것이 없다는 뜻이고, 410 은 일부러 지웠으니 그만 묻으라는 뜻입니다.

  • 502503

    502 는 뒤쪽 서버가 이상한 것을 돌려준 경우이고, 503 은 이 서버가 지금 일을 못 하는 경우입니다.

파일은 서버로 전송되지 않고 브라우저에서만 처리됩니다.

사용 방법

가입도 설치도 없이, 사용 횟수 제한도 없이 무료로 쓸 수 있습니다.

번호나 이유구의 일부를 넣으면 코드를 찾습니다. 입력하는 동안 목록이 좁혀지고, 각 줄에는 그것을 언제 보내야 하는지가 붙어 있습니다.

첫 자리가 갈래를 정합니다. 1xx 는 알림, 2xx 는 성공, 3xx 는 리다이렉트, 4xx 는 요청 잘못, 5xx 는 서버 잘못입니다. 이 표에 없는 코드라도 그만큼은 알 수 있습니다.

4xx 와 5xx 의 구분은 실무에서 무게가 다릅니다. 잘못된 요청에 500 을 내면 당직자가 있지도 않은 서버 장애를 찾아 헤매고, 터진 핸들러에 400 을 내면 진짜 장애가 묻힙니다.

아래 짝들은 코드 리뷰에서 실제로 다투게 되는 것들입니다. 401 은 누구인지 모른다는 뜻이고 403 은 누구인지 알지만 안 된다는 뜻입니다. 권한 문제에 401 을 보내면 이미 보낸 자격 증명을 다시 보내라고 부르는 셈입니다.

이유구는 규격에 적힌 그대로 두고 번역하지 않습니다. 실제로 회선을 타고 가는 글자가 그것이기 때문입니다.

입력한 값은 서버로 전송되지 않습니다. 브라우저 안에서만 찾습니다.

이런 도구도 함께 씁니다