tigtools

HTTP 상태 코드

HTTP 상태 코드의 의미, 서버가 코드를 보내는 경우, 코드가 정의된 명세를 확인하세요. 번호나 키워드로 검색하고, 클래스별로 필터링하거나 특정 코드로 바로 연결되는 링크를 공유할 수 있습니다.

브라우저에서 실행 가입 불필요

코드 79개 표시

  • 100 Continue

    서버가 요청 헤더를 받았으며 클라이언트가 본문을 보낼 수 있습니다. 클라이언트가 큰 본문을 업로드하기 전에 “Expect: 100-continue”를 보내는 경우에 표시됩니다.

    정의: RFC 9110

  • 101 Switching Protocols

    서버가 Upgrade 헤더에 지정된 프로토콜로 전환하라는 클라이언트의 요청에 동의합니다. 연결을 WebSocket으로 업그레이드할 때 표시됩니다.

    정의: RFC 9110

  • 102 Processing

    폐기되었거나 사용되지 않음

    서버가 WebDAV 요청을 수락했지만 아직 처리를 마치지 않았습니다. 이후 WebDAV 명세에서 삭제되어 현재는 거의 사용되지 않습니다.

    정의: RFC 2518

  • 103 Early Hints

    최종 응답 전에 전송되어 브라우저가 Link 헤더에 지정된 리소스를 미리 불러올 수 있습니다. CDN과 서버에서 페이지 로드 속도를 높이는 데 사용됩니다.

    정의: RFC 8297

  • 200 OK

    요청이 성공했고 응답에 결과가 포함되어 있습니다. 페이지를 불러오거나 API 호출이 성공했을 때 반환되는 일반적인 응답입니다.

    정의: RFC 9110

  • 201 Created

    요청이 성공하여 새 리소스가 생성되었습니다. 보통 Location 헤더로 리소스를 식별합니다. 레코드를 생성하는 POST 요청이 성공한 뒤 흔히 반환됩니다.

    정의: RFC 9110

  • 202 Accepted

    요청을 처리하도록 수락했지만 처리가 완료되지는 않았습니다. 내보내기나 일괄 작업처럼 작업을 대기열에 넣는 API에서 사용됩니다.

    정의: RFC 9110

  • 203 Non-Authoritative Information

    요청이 성공했지만 변환 프록시가 원본 서버에서 반환한 콘텐츠를 수정했습니다.

    정의: RFC 9110

  • 204 No Content

    요청이 성공했고 반환할 콘텐츠가 없습니다. DELETE 요청이나 클라이언트가 응답 본문을 필요로 하지 않는 데이터 저장 작업에서 흔히 사용됩니다.

    정의: RFC 9110

  • 205 Reset Content

    요청이 성공했으며 클라이언트는 문서 화면을 초기화해야 합니다. 예를 들어 양식을 비울 때 사용합니다. 드물게 사용됩니다.

    정의: RFC 9110

  • 206 Partial Content

    서버가 클라이언트가 요청한 바이트 범위만 반환합니다. 동영상 스트리밍, 다운로드 재개 또는 클라이언트가 Range 헤더를 보낼 때 표시됩니다.

    정의: RFC 9110

  • 207 Multi-Status

    XML 본문에 여러 리소스의 상태 코드를 각각 담는 WebDAV 응답입니다.

    정의: RFC 4918

  • 208 Already Reported

    동일한 바인딩된 리소스 구성원을 다시 나열하지 않도록 WebDAV 207 응답 내에서 사용됩니다.

    정의: RFC 5842

  • 226 IM Used

    서버가 현재 리소스에 인스턴스 조작(예: 델타 인코딩)을 적용했습니다. 매우 드물게 표시됩니다.

    정의: RFC 3229

  • 300 Multiple Choices

    리소스에 여러 표현이 있으므로 클라이언트가 하나를 선택해야 합니다. 실제로는 거의 사용되지 않습니다.

    정의: RFC 9110

  • 301 Moved Permanently

    리소스가 Location 헤더에 지정된 URL로 영구적으로 이동했습니다. 브라우저와 검색 엔진은 링크를 업데이트합니다. 일부 클라이언트는 이 코드를 따를 때 POST를 GET으로 변경합니다.

    정의: RFC 9110

  • 302 Found

    리소스가 Location 헤더에 지정된 다른 URL에 일시적으로 있습니다. 로그인 후나 단기 리디렉션에 흔히 사용되며, 브라우저는 보통 GET으로 요청을 이어갑니다.

    정의: RFC 9110

  • 303 See Other

    클라이언트는 GET으로 다른 URL에서 결과를 가져와야 합니다. 양식 POST 후 확인 페이지로 리디렉션하는 경우에 사용됩니다(Post/Redirect/Get 패턴).

    정의: RFC 9110

  • 304 Not Modified

    캐시된 사본이 여전히 유효하므로 서버가 본문을 보내지 않습니다. 브라우저가 If-None-Match 또는 If-Modified-Since로 캐시된 파일의 유효성을 다시 확인할 때 표시됩니다.

    정의: RFC 9110

  • 305 Use Proxy

    폐기되었거나 사용되지 않음

    클라이언트에 Location 헤더에 지정된 프록시를 사용하도록 요청합니다. 보안상의 이유로 폐기되었으며 브라우저는 이를 무시합니다.

    정의: RFC 9110

  • 306 (Unused)

    폐기되었거나 사용되지 않음

    예약된 코드입니다. HTTP/1.1 초기 초안에서 사용되었지만 현재는 사용되지 않습니다.

    정의: RFC 9110

  • 307 Temporary Redirect

    리소스가 일시적으로 다른 URL에 있으며, 클라이언트는 같은 메서드와 본문으로 요청을 다시 보내야 합니다. 브라우저가 HTTPS로 내부 HSTS 리디렉션할 때도 사용됩니다.

    정의: RFC 9110

  • 308 Permanent Redirect

    리소스가 영구적으로 이동했으며, 클라이언트는 새 URL에서 같은 메서드와 본문을 사용해야 합니다. 307의 영구 리디렉션 버전으로, POST 요청을 안전하게 리디렉션할 수 있습니다.

    정의: RFC 9110

  • 400 Bad Request

    요청 형식이 잘못되어 서버가 처리할 수 없습니다. 잘못된 JSON, 올바르지 않은 쿼리 매개변수, 손상된 쿠키 등이 원인일 수 있습니다.

    정의: RFC 9110

  • 401 Unauthorized

    요청에 유효한 인증 정보가 없습니다. 이름과 달리 ‘인증되지 않음’을 의미하며, 서버는 로그인 방법을 안내하는 WWW-Authenticate 헤더를 보냅니다.

    정의: RFC 9110

  • 402 Payment Required

    HTTP 사양에서 향후 사용을 위해 예약된 코드입니다. 일부 API와 결제 서비스에서는 결제나 구독이 필요한 경우 사용합니다.

    정의: RFC 9110

  • 403 Forbidden

    서버가 요청을 이해했지만 거부했습니다. 다시 로그인해도 해결되지 않습니다. 권한이 없거나, 디렉터리 목록 표시가 비활성화되어 있거나, 방화벽이 클라이언트를 차단할 때 발생할 수 있습니다.

    정의: RFC 9110

  • 404 Not Found

    서버에서 요청한 리소스를 찾을 수 없습니다. 링크를 잘못 입력했거나 오래된 링크를 사용한 경우, 페이지가 삭제된 경우, API 경로가 잘못된 경우가 일반적입니다.

    정의: RFC 9110

  • 405 Method Not Allowed

    리소스는 존재하지만 사용한 HTTP 메서드를 지원하지 않습니다. 예를 들어 읽기 전용 URL에 POST를 보내는 경우입니다. 응답의 Allow 헤더에 허용되는 메서드가 표시됩니다.

    정의: RFC 9110

  • 406 Not Acceptable

    서버에서 클라이언트의 Accept 헤더에 나열된 형식 중 어떤 형식으로도 응답을 제공할 수 없습니다.

    정의: RFC 9110

  • 407 Proxy Authentication Required

    401과 비슷하지만 클라이언트가 먼저 프록시에 인증해야 합니다. 인증이 필요한 프록시를 사용하는 기업 네트워크에서 발생할 수 있습니다.

    정의: RFC 9110

  • 408 Request Timeout

    클라이언트가 요청 전송을 마칠 때까지 기다리다가 서버에서 시간이 초과되었습니다. 연결이 느리거나 중단된 경우 발생할 수 있습니다.

    정의: RFC 9110

  • 409 Conflict

    요청이 리소스의 현재 상태와 충돌합니다. 편집 충돌이나 이미 존재하는 항목을 만들려는 경우가 이에 해당합니다.

    정의: RFC 9110

  • 410 Gone

    리소스가 영구적으로 제거되었으며 다시 제공되지 않습니다. 404와 달리 검색 엔진에 해당 URL을 더 빨리 삭제하도록 알립니다.

    정의: RFC 9110

  • 411 Length Required

    서버에서 Content-Length 헤더를 요구하지만 요청에 해당 헤더가 없습니다.

    정의: RFC 9110

  • 412 Precondition Failed

    If-Match와 같은 요청 헤더의 조건이 충족되지 않았습니다. 클라이언트가 마지막으로 읽은 이후 변경된 리소스를 덮어쓰지 않도록 할 때 사용됩니다.

    정의: RFC 9110

  • 413 Content Too Large

    요청 본문이 서버에서 허용하는 크기보다 큽니다. nginx의 client_max_body_size와 같은 제한을 초과하는 파일을 업로드할 때 발생할 수 있습니다.

    정의: RFC 9110

  • 414 URI Too Long

    URL이 서버에서 처리할 수 있는 길이보다 깁니다. GET으로 너무 많은 데이터를 보내는 양식이나 매개변수를 계속 추가하는 리디렉션 루프가 원인일 수 있습니다.

    정의: RFC 9110

  • 415 Unsupported Media Type

    서버에서 요청 본문의 형식을 지원하지 않습니다. 예를 들어 application/json을 요구하는 엔드포인트에 XML을 보내는 경우입니다.

    정의: RFC 9110

  • 416 Range Not Satisfiable

    Range 헤더에서 요청한 바이트 범위가 리소스 크기를 벗어났습니다.

    정의: RFC 9110

  • 417 Expectation Failed

    서버에서 클라이언트의 Expect 헤더에 명시된 요구 사항을 충족할 수 없습니다.

    정의: RFC 9110

  • 418 I'm a teapot

    1998년 Hyper Text Coffee Pot Control Protocol에서 비롯된 만우절 농담입니다. 커피를 내리기를 거부하는 주전자를 뜻합니다. HTTP에서는 사용되지 않는 코드로 예약되어 있지만, 일부 서버는 이스터 에그로 반환하거나 원치 않는 봇을 거부할 때 사용합니다.

    정의: RFC 2324 / RFC 9110 (Unused)

  • 419 Page Expired

    비표준

    표준 코드가 아닙니다. Laravel은 양식의 CSRF 토큰이 없거나 만료된 경우 이 코드를 반환하며, 보통 세션 시간이 초과된 후 발생합니다.

    정의: Laravel

  • 420 Enhance Your Calm

    비표준

    표준 코드가 아닙니다. 이전 Twitter API에서 요청 제한에 사용했습니다. 이 경우 표준 코드는 429입니다.

    정의: Twitter API v1

  • 421 Misdirected Request

    요청을 받은 서버가 해당 호스트에 응답할 수 없습니다. 예를 들어 HTTP/2 연결을 다른 도메인에 재사용할 때 발생할 수 있습니다.

    정의: RFC 9110

  • 422 Unprocessable Content

    요청 형식은 올바르지만 내용이 유효하지 않습니다. 유효성 검사 규칙을 통과하지 못한 양식이 이에 해당합니다. API에서 유효성 검사 오류를 나타내는 데 널리 사용됩니다.

    정의: RFC 9110

  • 423 Locked

    WebDAV 리소스가 잠겨 있어 변경할 수 없습니다.

    정의: RFC 4918

  • 424 Failed Dependency

    의존하는 다른 작업이 실패하여 WebDAV 요청이 실패했습니다.

    정의: RFC 4918

  • 425 Too Early

    서버에서 재전송될 가능성이 있는 요청을 처리하지 않습니다. TLS 1.3의 초기 데이터로 전송된 요청이 이에 해당합니다.

    정의: RFC 8470

  • 426 Upgrade Required

    서버에서 현재 프로토콜을 통한 요청을 거부하며, Upgrade 헤더에 필요한 프로토콜을 지정합니다.

    정의: RFC 9110

  • 428 Precondition Required

    서버에서 업데이트 유실을 방지하기 위해 조건부 요청을 요구합니다. 예를 들어 If-Match를 사용할 수 있습니다.

    정의: RFC 6585

  • 429 Too Many Requests

    클라이언트가 일정 시간 동안 너무 많은 요청을 보냈습니다. API에서 요청 제한에 사용하며, 다시 시도할 시점을 나타내는 Retry-After 헤더가 포함되는 경우가 많습니다.

    정의: RFC 6585

  • 431 Request Header Fields Too Large

    요청 헤더가 너무 큽니다. 쿠키가 너무 많거나 크기가 지나치게 큰 경우가 흔한 원인입니다. 사이트 쿠키를 지우면 보통 해결됩니다.

    정의: RFC 6585

  • 444 No Response

    비표준

    표준 코드가 아닙니다. nginx가 응답을 보내지 않고 연결을 끊을 때 내부적으로 사용하며, 원치 않는 트래픽을 차단할 때가 많습니다. 클라이언트는 실제로 이 코드를 받지 않습니다.

    정의: nginx

  • 451 Unavailable For Legal Reasons

    법원 명령이나 정부 검열 등 법적 사유로 리소스를 이용할 수 없습니다. 코드 번호는 소설 Fahrenheit 451을 가리킵니다.

    정의: RFC 7725

  • 494 Request Header Too Large

    비표준

    표준 코드가 아닙니다. nginx에서 사용하는 431의 자체 변형으로, 요청 헤더가 버퍼 한도를 초과했을 때 기록됩니다.

    정의: nginx

  • 495 SSL Certificate Error

    비표준

    표준 코드가 아닙니다. 클라이언트 인증서 검증에 실패하면 nginx가 반환합니다.

    정의: nginx

  • 496 SSL Certificate Required

    비표준

    표준 코드가 아닙니다. 필수 클라이언트 인증서가 제공되지 않으면 nginx가 반환합니다.

    정의: nginx

  • 497 HTTP Request Sent to HTTPS Port

    비표준

    표준 코드가 아닙니다. HTTPS용으로 설정된 포트에 일반 HTTP 요청이 전송되면 nginx가 반환합니다.

    정의: nginx

  • 499 Client Closed Request

    비표준

    표준 코드가 아닙니다. 서버가 응답하기 전에 클라이언트가 연결을 닫으면 nginx가 기록합니다. 사용자가 느리게 로드되는 페이지를 취소하거나 클라이언트 측에서 시간이 초과된 경우가 이에 해당합니다.

    정의: nginx

  • 500 Internal Server Error

    서버에서 예상치 못한 오류가 발생해 요청을 완료할 수 없습니다. 버그, 충돌 또는 잘못된 설정으로 인한 일반 오류이며, 자세한 내용은 서버 로그에서 확인할 수 있습니다.

    정의: RFC 9110

  • 501 Not Implemented

    서버에서 필요한 기능을 지원하지 않습니다. 서버가 인식하지 못하는 HTTP 메서드가 이에 해당합니다.

    정의: RFC 9110

  • 502 Bad Gateway

    게이트웨이나 프록시가 업스트림 서버로부터 유효하지 않은 응답을 받았습니다. nginx나 로드 밸런서 뒤의 애플리케이션이 중단되거나 재시작될 때 흔히 발생합니다.

    정의: RFC 9110

  • 503 Service Unavailable

    서버가 과부하 상태이거나 유지보수로 중단되어 일시적으로 요청을 처리할 수 없습니다. Retry-After 헤더에 다시 시도할 시점이 표시될 수 있습니다.

    정의: RFC 9110

  • 504 Gateway Timeout

    게이트웨이나 프록시가 업스트림 서버로부터 제때 응답을 받지 못했습니다. 데이터베이스 쿼리 지연처럼 백엔드 요청이 너무 오래 걸릴 때 발생합니다.

    정의: RFC 9110

  • 505 HTTP Version Not Supported

    서버가 요청에 사용된 HTTP 버전을 지원하지 않습니다.

    정의: RFC 9110

  • 506 Variant Also Negotiates

    서버의 콘텐츠 협상 설정 오류입니다. 선택된 변형 자체가 협상하도록 설정되어 있습니다.

    정의: RFC 2295

  • 507 Insufficient Storage

    서버에 요청을 완료하는 데 필요한 항목을 저장할 공간이 없습니다. 예를 들어 WebDAV 서버의 디스크가 가득 찬 경우입니다.

    정의: RFC 4918

  • 508 Loop Detected

    무한 루프가 발견되어 서버가 WebDAV 작업을 중단했습니다.

    정의: RFC 5842

  • 509 Bandwidth Limit Exceeded

    비표준

    표준 코드가 아닙니다. 일부 공유 호스팅 환경(Apache 모듈, cPanel)에서 사이트가 허용된 대역폭을 초과했을 때 사용합니다.

    정의: Apache / cPanel

  • 510 Not Extended

    폐기되었거나 사용되지 않음

    요청을 처리하려면 추가 확장이 필요합니다. 현재는 역사적 사양으로 분류된 실험 사양에서 정의한 코드입니다.

    정의: RFC 2774

  • 511 Network Authentication Required

    네트워크에 접속하려면 클라이언트가 인증해야 합니다. 로그인 전에 호텔, 공항 또는 카페의 Wi-Fi 캡티브 포털에서 전송됩니다.

    정의: RFC 6585

  • 520 Web Server Returned an Unknown Error

    비표준

    표준 코드가 아닙니다. Cloudflare는 원본 서버가 빈 응답이나 알 수 없거나 예상치 못한 응답을 보냈을 때 이 코드를 반환합니다.

    정의: Cloudflare

  • 521 Web Server Is Down

    비표준

    표준 코드가 아닙니다. 원본 서버가 연결을 거부했을 때 Cloudflare가 반환합니다. 대개 웹 서버가 중단되었거나 Cloudflare의 IP 주소를 차단한 경우입니다.

    정의: Cloudflare

  • 522 Connection Timed Out

    비표준

    표준 코드가 아닙니다. 원본 서버와의 TCP 연결 시간이 초과되었을 때 Cloudflare가 반환합니다.

    정의: Cloudflare

  • 523 Origin Is Unreachable

    비표준

    표준 코드가 아닙니다. DNS 또는 라우팅 문제 등으로 원본 서버에 연결할 수 없을 때 Cloudflare가 반환합니다.

    정의: Cloudflare

  • 524 A Timeout Occurred

    비표준

    표준 코드가 아닙니다. 원본 서버에 연결했지만 제한 시간(기본값 100초) 안에 HTTP 응답을 받지 못했을 때 Cloudflare가 반환합니다.

    정의: Cloudflare

  • 525 SSL Handshake Failed

    비표준

    표준 코드가 아닙니다. 원본 서버와의 SSL/TLS 핸드셰이크에 실패했을 때 Cloudflare가 반환합니다.

    정의: Cloudflare

  • 526 Invalid SSL Certificate

    비표준

    표준 코드가 아닙니다. 원본 서버의 SSL 인증서가 유효하지 않고 Full (strict) SSL 모드가 활성화되어 있을 때 Cloudflare가 반환합니다.

    정의: Cloudflare

사용 방법

  1. 404와 같은 코드 번호를 입력하거나, 모든 서버 오류를 보려면 5만 입력하세요. “redirect” 또는 “timeout” 같은 키워드로도 검색할 수 있습니다.
  2. 클래스 필터로 정보 응답, 성공, 리디렉션, 클라이언트 오류 또는 서버 오류만 표시하세요.
  3. 코드 옆의 “링크 복사”를 사용해 버그 신고 등에 공유할 수 있는 해당 코드의 바로가기 링크를 복사하세요.

작동 방식

모든 HTTP 응답은 세 자리 상태 코드로 시작합니다. 첫 번째 숫자가 분류를 나타냅니다. 1xx는 정보 응답, 2xx는 성공, 3xx는 리디렉션, 4xx는 요청으로 인한 오류, 5xx는 서버 측 오류입니다. 특정 코드를 인식하지 못하는 클라이언트는 해당 분류의 x00 코드처럼 처리하므로, 알 수 없는 4xx 코드는 400처럼 처리됩니다.

기본 코드는 RFC 9110(HTTP Semantics, 2022)에 정의되어 있으며, 이 문서는 이전 RFC 7231을 대체했습니다. 그 밖의 코드는 확장 규격에서 비롯되었습니다. WebDAV(RFC 4918), 428·429·431·511을 정의한 RFC 6585, 451을 정의한 RFC 7725, 425를 정의한 RFC 8470이 이에 해당합니다. RFC 9110에서는 코드 두 개의 이름도 바뀌었습니다. 413은 이제 “Content Too Large”, 422는 “Unprocessable Content”이며, 이전 이름인 “Payload Too Large”와 “Unprocessable Entity”로 표시되는 경우도 있습니다.

로그에서 볼 수 있는 일부 코드는 표준이 아닙니다. nginx는 내부적으로 444 및 494–499를 사용하며(499는 클라이언트가 기다리기를 포기했음을 나타냄), Cloudflare는 오리진 서버에서 적절한 응답을 받지 못하면 520–526을 반환합니다. 이 코드들은 목록에서 “비표준”으로 표시됩니다. “Not Found”와 같은 상태 문구는 사양에 쓰인 영어 그대로 표시됩니다. HTTP/2와 HTTP/3에서는 숫자만 전송합니다.

예시

사이트 이전 시 301 또는 308

둘 다 영구 리디렉션입니다. 일반적인 페이지 이동에는 301을 사용하세요. 클라이언트가 POST 또는 PUT 요청을 새 URL에 다시 보내야 한다면 308을 사용하세요. 일부 클라이언트는 301을 받은 뒤 POST를 GET으로 바꾸기 때문입니다.

401과 403의 차이

API는 토큰이 없거나 만료된 토큰이 전송되면 401을 반환하므로 클라이언트에서 로그인해야 합니다. 토큰은 유효하지만 사용자에게 권한이 없으면 403을 반환하므로 다시 로그인해도 해결되지 않습니다.

nginx 뒤에서 발생한 502 진단

nginx에서 502 Bad Gateway가 발생했다면 뒤에 있는 애플리케이션이 제대로 응답하지 않은 것입니다. 앱 프로세스가 실행 중인지, 로그에 어떤 내용이 기록됐는지 확인하세요. 504는 응답이 너무 늦었음을 뜻합니다.

자주 묻는 질문

404와 410은 어떻게 다른가요?

404는 서버가 리소스를 찾을 수 없다는 뜻이며, 앞으로도 찾을 수 없을지는 나타내지 않습니다. 410은 리소스가 의도적으로 삭제되어 다시 제공되지 않는다는 뜻이며, 검색 엔진이 해당 URL을 더 빨리 색인에서 제외하는 데 도움이 됩니다.

유효성 검사 오류에는 400과 422 중 무엇을 반환해야 하나요?

둘 다 사용됩니다. 서버가 해석할 수 없는 요청(예: 형식이 잘못된 JSON)에는 400이 적합합니다. 요청은 올바르게 해석되지만 값이 유효하지 않은 경우(예: @가 없는 이메일 필드)에는 422가 적합합니다.

418 I'm a teapot은 실제 상태 코드인가요?

1998년 만우절에 발표된 RFC에서 유래했습니다. RFC 9110은 418을 다른 용도로 지정하지 않도록 미사용 코드로 남겨 두었습니다. 일부 서버가 농담으로 반환하기도 하지만, 표준상 의미는 없습니다.

499는 어디서 유래했나요?

499는 nginx 전용 코드입니다. 서버가 응답을 보내기 전에 클라이언트가 연결을 닫으면 nginx 로그에 표시됩니다. 클라이언트는 499를 받지 않습니다. 보통 응답이 느리거나 클라이언트 측에서 시간이 초과된 경우를 나타냅니다.

검색 엔진은 302를 301과 동일하게 취급하나요?

302는 일시적인 이동을 나타내므로 검색 엔진은 보통 처음에는 원래 URL을 색인에 유지합니다. 302가 오랫동안 유지되면 Google이 영구 리디렉션으로 취급할 수 있습니다. 영구적으로 이동하는 경우에는 301 또는 308을 사용하세요.

개인정보 보호

목록은 페이지에 포함되어 있습니다. 검색과 필터링은 브라우저에서 처리되며 검색어는 어디에도 전송되지 않고 분석 데이터에도 포함되지 않습니다.