DevToolPal
한국어

HTTP 상태 코드

모든 HTTP 상태 코드를 쉽게 설명합니다. 의미, 흔한 원인, 해결 방법, 응답 예시, 정의한 RFC까지 정리했습니다.

상태 코드 70개

1xx 정보

임시 응답: 요청을 받았고 처리를 계속하고 있습니다.

2xx 성공

요청을 정상적으로 받고, 이해하고, 수락했습니다.

200 OK 성공 요청이 성공했습니다. GET이면 본문에 리소스가, POST면 작업 결과가 들어 있습니다. 201 Created 생성됨 요청이 성공해 새 리소스가 생성되었습니다. 보통 Location 헤더가 그 리소스를 가리킵니다. 202 Accepted 접수됨 요청이 처리를 위해 접수되었지만 아직 처리가 끝나지 않았습니다. 응답 시점에는 결과를 알 수 없습니다. 203 Non-Authoritative Information 신뢰할 수 없는 정보 요청은 성공했지만 변환 프록시가 오리진의 200 응답 내용을 수정했습니다. 204 No Content 콘텐츠 없음 요청이 성공했고 반환할 본문이 없습니다. 헤더로 새 ETag 같은 메타데이터를 전달할 수는 있습니다. 205 Reset Content 콘텐츠 재설정 요청이 성공했으며 클라이언트는 문서 보기를 재설정해야 합니다. 예를 들어 제출한 폼을 비웁니다. 본문은 보내지 않습니다. 206 Partial Content 부분 콘텐츠 서버가 Range 헤더의 요청대로 리소스의 일부만 반환하고 있습니다. Content-Range가 어떤 바이트가 포함되었는지 알려줍니다. 207 Multi-Status 다중 상태 하나의 요청이 영향을 준 여러 리소스 각각의 상태를 XML 본문에 담은 WebDAV 응답입니다. 208 Already Reported 이미 보고됨 WebDAV 207 본문 안에서 해당 리소스가 응답 앞부분에 이미 나열되었음을 알려, 바인딩이 루프를 만들 때 중복을 피합니다. 226 IM Used IM 사용됨 서버가 하나 이상의 인스턴스 조작(델타 인코딩)을 적용해 GET에 응답했으므로 본문은 전체 리소스가 아니라 차이(diff)입니다.

3xx 리디렉션

클라이언트가 한 단계 더 진행해야 합니다. 보통 새 URL로 이동합니다.

300 Multiple Choices 여러 선택지 리소스에 여러 표현(언어, 형식)이 있어 클라이언트나 사용자가 하나를 골라야 합니다. 서버는 Location으로 선호하는 것을 제안할 수 있습니다. 301 Moved Permanently 영구 이동 리소스가 Location의 URL로 영구 이동했습니다. 클라이언트와 검색 엔진은 앞으로 새 URL을 사용해야 합니다. 302 Found 임시 이동 리소스가 일시적으로 다른 URL에 있습니다. 클라이언트는 이후 요청에도 원래 URL을 계속 사용해야 합니다. 303 See Other 다른 위치 보기 서버가 클라이언트에게 다른 URL을 GET으로 가져오도록 안내합니다. 보통 POST의 결과를 보여 주기 위해서입니다. 304 Not Modified 수정되지 않음 클라이언트가 이미 가진 캐시 사본이 여전히 유효하므로 서버가 본문을 보내지 않습니다. If-None-Match나 If-Modified-Since가 있는 조건부 요청에 대한 응답입니다. 305 Use Proxy 프록시 사용 폐기되었습니다. 한때 Location의 프록시를 통해 요청을 다시 보내라는 뜻이었습니다. 보안상의 이유로 브라우저는 무시합니다. 307 Temporary Redirect 임시 리디렉션 리소스가 일시적으로 다른 URL에 있으며, 클라이언트는 같은 메서드와 본문으로 그곳에 요청을 다시 보내야 합니다. 308 Permanent Redirect 영구 리디렉션 리소스가 영구 이동했으며, 클라이언트는 같은 메서드와 본문으로 새 URL에 요청을 다시 보내야 합니다.

4xx 클라이언트 오류

요청에 클라이언트가 고쳐야 할 문제가 있습니다.

400 Bad Request 잘못된 요청 요청 형식이 잘못되어 서버가 처리할 수 없습니다. 잘못된 구문, 잘못된 프레이밍, 파싱할 수 없는 값 등입니다. 401 Unauthorized 인증 필요 요청에 유효한 인증 정보가 없습니다. 이름은 Unauthorized지만 실제 의미는 "인증되지 않음"으로, 로그인하거나 유효한 토큰을 보내야 합니다. 402 Payment Required 결제 필요 향후 사용을 위해 예약되어 있지만, 실제로는 결제나 유료 요금제가 필요할 때 서비스들이 반환합니다. 403 Forbidden 금지됨 서버가 요청을 이해했지만 권한 부여를 거부합니다. 권한이 바뀌지 않는 한 다시 로그인해도 소용없습니다. 404 Not Found 찾을 수 없음 서버가 요청한 URL에서 아무것도 찾을 수 없습니다. 리소스가 존재했었는지, 다시 생길지는 알려주지 않습니다. 405 Method Not Allowed 허용되지 않는 메서드 URL은 존재하지만 사용한 HTTP 메서드를 지원하지 않습니다. Allow 헤더에 사용 가능한 메서드가 나열됩니다. 406 Not Acceptable 허용되지 않음 서버가 클라이언트의 Accept 헤더가 허용하는 어떤 형식으로도 응답을 만들 수 없습니다. 407 Proxy Authentication Required 프록시 인증 필요 클라이언트와 서버 사이의 프록시가 요청을 전달하기 전에 인증을 요구합니다. 408 Request Timeout 요청 시간 초과 클라이언트가 제시간에 완전한 요청을 보내지 않아 서버가 연결을 닫았습니다. 409 Conflict 충돌 요청이 리소스의 현재 상태와 충돌합니다. 중복이나 동시 편집 등이 있습니다. 410 Gone 사라짐 리소스가 영구적으로 사라졌고 옮겨 간 주소도 알 수 없습니다. 404와 달리 서버가 의도적으로 밝히는 것입니다. 411 Length Required 길이 필요 서버가 Content-Length 헤더를 요구하는데 요청에 없습니다. 412 Precondition Failed 전제 조건 실패 If-Match나 If-Unmodified-Since 같은 요청 헤더의 전제 조건이 거짓으로 평가되어 서버가 요청을 적용하지 않았습니다. 413 Content Too Large 콘텐츠가 너무 큼 요청 본문이 서버가 처리하려 하거나 처리할 수 있는 크기보다 큽니다. 예전 이름은 Payload Too Large입니다. 414 URI Too Long URI가 너무 김 요청 URL이 서버가 해석하려는 길이보다 깁니다. 415 Unsupported Media Type 지원하지 않는 미디어 타입 본문의 미디어 타입(Content-Type)이나 인코딩을 지원하지 않아 서버가 요청을 거부합니다. 416 Range Not Satisfiable 범위를 충족할 수 없음 Range 헤더가 리소스 크기를 벗어난 바이트를 요청합니다. 417 Expectation Failed 기대 실패 서버가 요청의 Expect 헤더 요구 사항(대개 Expect: 100-continue)을 충족할 수 없습니다. 418 I'm a teapot 나는 찻주전자 Hyper Text Coffee Pot Control Protocol에서 나온 만우절 농담으로, 서버가 찻주전자라서 커피를 끓일 수 없다는 뜻입니다. 농담이나 봇 차단용으로 쓰는 사이트도 있습니다. 421 Misdirected Request 잘못 전달된 요청 요청이 해당 호스트에 응답하도록 설정되지 않은 서버에 도착했습니다. HTTP/2 연결이 다른 도메인에 재사용된 경우가 많습니다. 422 Unprocessable Content 처리할 수 없는 콘텐츠 요청 형식은 올바르지만 의미상 오류가 있어 서버가 처리할 수 없습니다. 예전 이름은 Unprocessable Entity입니다. 423 Locked 잠김 WebDAV: 리소스가 잠겨 있어 메서드를 적용할 수 없습니다. 424 Failed Dependency 의존성 실패 WebDAV: 같은 요청 안에서 의존하던 다른 작업이 실패해서 이 작업도 실패했습니다. 425 Too Early 너무 이름 TLS 1.3 조기 데이터(0-RTT)로 보낸 요청은 재전송 공격을 받을 수 있어 서버가 처리를 거부합니다. 426 Upgrade Required 업그레이드 필요 서버가 현재 프로토콜로는 요청을 거부하고, Upgrade 헤더에 지정한 TLS나 HTTP/2 등으로 업그레이드하라고 요구합니다. 428 Precondition Required 전제 조건 필요 업데이트 손실을 막기 위해 서버가 요청이 조건부(If-Match 등)이기를 요구합니다. 429 Too Many Requests 요청이 너무 많음 클라이언트가 정해진 시간에 너무 많은 요청을 보냈습니다(속도 제한). Retry-After가 기다릴 시간을 알려줄 수 있습니다. 431 Request Header Fields Too Large 요청 헤더 필드가 너무 큼 요청 헤더가 너무 큽니다. 헤더 하나가 크거나, 전체 헤더 합이 큽니다. 451 Unavailable For Legal Reasons 법적 이유로 이용 불가 법원 명령이나 정부 검열 같은 법적 이유로 서버가 리소스를 제공할 수 없습니다. 번호는 『화씨 451』에서 따왔습니다. 499 Client Closed Request (비표준) 클라이언트가 요청을 닫음 서버가 응답을 보내기 전에 클라이언트가 연결을 닫으면 nginx가 499를 기록합니다. 클라이언트는 이 코드를 보지 못합니다.

5xx 서버 오류

유효한 요청을 서버가 처리하지 못했습니다.

500 Internal Server Error 내부 서버 오류 서버가 예상치 못한 상황을 만나 요청을 완료하지 못했습니다. 서버 측 오류를 포괄하는 일반 코드입니다. 501 Not Implemented 구현되지 않음 서버가 필요한 기능, 대개 요청 메서드 자체를 지원하지 않습니다. 502 Bad Gateway 잘못된 게이트웨이 게이트웨이나 프록시가 요청을 전달한 업스트림 서버로부터 잘못된 응답을 받았습니다. 503 Service Unavailable 서비스 이용 불가 과부하나 점검 때문에 서버가 일시적으로 요청을 처리할 수 없습니다. Retry-After가 다시 시도할 시점을 알려줄 수 있습니다. 504 Gateway Timeout 게이트웨이 시간 초과 게이트웨이나 프록시가 업스트림 서버로부터 제때 응답을 받지 못했습니다. 505 HTTP Version Not Supported 지원되지 않는 HTTP 버전 서버가 요청에 사용된 HTTP 버전을 지원하지 않습니다. 506 Variant Also Negotiates 변형도 협상함 투명한 콘텐츠 협상이 잘못 설정되었습니다. 선택된 변형 자체가 다시 협상하도록 설정되어 루프가 생깁니다. 507 Insufficient Storage 저장 공간 부족 서버가 요청을 완료하는 데 필요한 표현을 저장할 수 없습니다(디스크 공간이나 할당량 부족). WebDAV에서 유래했습니다. 508 Loop Detected 루프 감지됨 서버가 Depth: infinity 요청(WebDAV)을 처리하다 무한 루프를 감지했습니다. 일부 호스팅은 리소스 제한에도 사용합니다. 510 Not Extended 확장되지 않음 서버가 요청을 처리하려면 추가 확장이 필요합니다(HTTP 확장 프레임워크). 이 프레임워크는 이제 역사적인 것이 되었습니다. 511 Network Authentication Required 네트워크 인증 필요 네트워크에 접근하려면 클라이언트가 인증해야 합니다. 보통 종속 포털(호텔이나 공항 Wi-Fi)입니다. 520 Web Server Returned an Unknown Error (비표준) 알 수 없는 오류 Cloudflare 전용: 오리진 서버가 빈 응답, 알 수 없는 응답 또는 예상치 못한 응답을 반환했습니다. 521 Web Server Is Down (비표준) 웹 서버 다운 Cloudflare 전용: 오리진 서버가 연결을 거부했습니다. 522 Connection Timed Out (비표준) 연결 시간 초과 Cloudflare 전용: 오리진으로의 TCP 연결이 시간 초과되었습니다. 523 Origin Is Unreachable (비표준) 오리진에 도달할 수 없음 Cloudflare 전용: 보통 DNS나 라우팅 문제로 Cloudflare가 오리진에 도달할 수 없습니다. 524 A Timeout Occurred (비표준) 시간 초과 발생 Cloudflare 전용: 오리진에 연결은 되었지만 오리진이 제시간(기본 100초)에 HTTP 응답을 보내지 않았습니다. 525 SSL Handshake Failed (비표준) SSL 핸드셰이크 실패 Cloudflare 전용: Cloudflare와 오리진 사이의 TLS 핸드셰이크가 실패했습니다. 526 Invalid SSL Certificate (비표준) 잘못된 SSL 인증서 Cloudflare 전용: Full (strict) SSL 모드에서 오리진의 인증서가 유효하지 않거나, 만료되었거나, 자체 서명되었거나, 호스트 이름과 일치하지 않습니다.