HTTP 상태 코드 레퍼런스 - HTTP 응답 코드 전체 목록 온라인
모든 HTTP 상태 코드(1xx-5xx)를 검색, 필터링, 복사하세요. 설명, 사용 사례, 응답 예시 포함 — 100% 클라이언트 사이드, 서버로 데이터가 전송되지 않습니다.
61개의 상태 코드
The server is switching protocols as requested by the client.
The server has received and is processing the request, but no response is available yet.
Used to return response headers before the final HTTP message.
The request succeeded.
The request succeeded and a new resource was created.
The request has been accepted for processing, but processing is not complete.
The returned metadata is not exactly the same as available from the origin server.
The server successfully processed the request but is not returning any content.
The server successfully processed the request and asks the client to reset the document view.
The server is delivering only part of the resource due to a range header sent by the client.
The message body contains multiple status codes for different operations.
The members of a DAV binding have already been enumerated in a previous reply.
The server has fulfilled a GET request for the resource with instance manipulations applied.
The request has more than one possible response.
The URL of the requested resource has been changed permanently.
The URI of requested resource has been changed temporarily.
The server sent this response to direct the client to get the requested resource at another URI with a GET request.
The resource has not been modified since the version specified by the request headers.
The server sends this response to redirect the client, guaranteeing the same HTTP method will be used.
The resource has been permanently moved, and the same HTTP method must be used.
The server cannot process the request due to something perceived to be a client error.
The client must authenticate itself to get the requested response.
Reserved for future use. Originally created for digital payment systems.
The client does not have access rights to the content.
The server cannot find the requested resource.
The request method is known by the server but is not supported by the target resource.
The server cannot produce a response matching the list of acceptable values defined in the request headers.
The client must first authenticate itself with the proxy.
The server timed out waiting for the request.
The request conflicts with the current state of the server.
The content has been permanently deleted from the server with no forwarding address.
The server rejects the request because the Content-Length header field is not defined.
The client has indicated preconditions in its headers which the server does not meet.
The request entity is larger than limits defined by the server.
The URI requested by the client is longer than the server is willing to interpret.
The media format of the requested data is not supported by the server.
The range specified by the Range header field in the request cannot be fulfilled.
The expectation given in the Expect request header could not be met by the server.
The server refuses the attempt to brew coffee with a teapot.
The request was directed at a server that is not able to produce a response.
The request was well-formed but was unable to be followed due to semantic errors.
The resource that is being accessed is locked.
The request failed because it depended on another request that failed.
The server is unwilling to risk processing a request that might be replayed.
The server refuses to perform the request using the current protocol.
The origin server requires the request to be conditional.
The user has sent too many requests in a given amount of time (rate limiting).
The server is unwilling to process the request because its header fields are too large.
The user agent requested a resource that cannot legally be provided.
The server has encountered a situation it does not know how to handle.
The request method is not supported by the server and cannot be handled.
The server got an invalid response while working as a gateway.
The server is not ready to handle the request.
The server is acting as a gateway and cannot get a response in time.
The HTTP version used in the request is not supported by the server.
The server has an internal configuration error during content negotiation.
The server is unable to store the representation needed to complete the request.
The server detected an infinite loop while processing the request.
Further extensions to the request are required for the server to fulfill it.
The client needs to authenticate to gain network access.
자주 묻는 질문
HTTP 상태 코드란 무엇인가요?
HTTP 상태 코드는 클라이언트의 요청에 대해 웹 서버가 반환하는 세 자리 숫자입니다. 요청이 성공했는지, 리다이렉트되었는지, 오류가 발생했는지를 나타냅니다. 상태 코드는 1xx(정보), 2xx(성공), 3xx(리다이렉션), 4xx(클라이언트 오류), 5xx(서버 오류)의 다섯 가지 클래스로 분류됩니다. IETF의 RFC 9110에 정의되어 있으며 웹의 기본 동작 원리입니다.
이 HTTP 상태 코드 참조 도구는 어떻게 사용하나요?
검색창에 상태 코드 번호(예: '404')나 키워드(예: 'not found' 또는 'redirect')를 입력하면 관련 코드를 즉시 찾을 수 있습니다. 1xx-5xx 버튼을 사용하여 카테고리별로 필터링할 수도 있습니다. 상태 코드 카드를 클릭하면 전체 설명, 일반적인 사용 사례, 복사 가능한 응답 예제를 확인할 수 있습니다. 복사 버튼을 사용하여 프로젝트에 필요한 코드나 스니펫을 빠르게 가져오세요.
데이터가 안전한가요? 서버로 전송되는 것이 있나요?
이 도구는 100% 클라이언트 사이드에서 동작합니다. 모든 HTTP 상태 코드 데이터는 페이지에 정적으로 포함되어 있어 API 호출, 서버 요청, 데이터 수집이 없습니다. 검색 쿼리와 상호작용은 브라우저를 떠나지 않습니다. 초기 페이지 로드 후에는 완전히 오프라인으로 작동합니다.
401 Unauthorized와 403 Forbidden의 차이점은 무엇인가요?
401 Unauthorized는 요청에 유효한 인증 자격 증명이 없음을 의미합니다. 클라이언트가 자신을 식별하지 않은 것입니다. 서버가 '당신이 누군지 모르겠으니 인증해 주세요'라고 말하는 것입니다. 403 Forbidden은 서버가 당신이 누군지 알고 있지만(인증되었을 수 있음) 해당 리소스에 접근할 권한이 없음을 의미합니다. 서버가 '당신이 누군지는 알지만, 허용되지 않습니다'라고 말하는 것입니다.
301과 308 리다이렉트의 차이점은 무엇인가요?
둘 다 영구 리다이렉트를 나타냅니다. 301 Moved Permanently는 리다이렉트 시 HTTP 메서드가 변경될 수 있습니다(예: POST가 GET으로 변경될 수 있음). 308 Permanent Redirect는 원래의 HTTP 메서드를 유지합니다. POST/PUT을 사용하는 API의 경우 308이 더 안전한 선택입니다. 마찬가지로 302 vs 307도 같은 관계입니다: 302 Found는 메서드 변경을 허용하고, 307 Temporary Redirect는 메서드를 유지합니다.
418 'I'm a teapot' 상태 코드는 왜 존재하나요?
418 I'm a teapot은 1998년 만우절 농담으로 RFC 2324에서 HTCPCP(Hyper Text Coffee Pot Control Protocol)의 일부로 정의되었습니다. 표준 관점에서 실제 HTTP 상태 코드는 아니지만, 이스터 에그로 널리 채택되어 많은 HTTP 라이브러리와 프레임워크에서 인식됩니다. 완전성을 위해 이 참조에 포함되어 있습니다.
WebDAV 상태 코드란 무엇인가요?
WebDAV(Web Distributed Authoring and Versioning)는 클라이언트가 원격 웹 콘텐츠 작성을 수행할 수 있도록 하는 HTTP의 확장입니다. 207 Multi-Status, 422 Unprocessable Content, 423 Locked, 424 Failed Dependency, 507 Insufficient Storage, 508 Loop Detected 등의 추가 상태 코드를 도입합니다. 이 코드들은 RFC 4918에 정의되어 있으며, 현대 REST API에서 일반적으로 사용됩니다(특히 유효성 검사 오류에 422가 사용됨).
코드 예제
// HTTP Status Code lookup
const HTTP_STATUS_CATEGORIES = {
'1xx': 'Informational',
'2xx': 'Success',
'3xx': 'Redirection',
'4xx': 'Client Error',
'5xx': 'Server Error',
};
function getStatusCategory(code) {
if (code >= 100 && code < 200) return '1xx';
if (code >= 200 && code < 300) return '2xx';
if (code >= 300 && code < 400) return '3xx';
if (code >= 400 && code < 500) return '4xx';
if (code >= 500 && code < 600) return '5xx';
return 'Unknown';
}
const STATUS_CODES = {
200: 'OK',
201: 'Created',
204: 'No Content',
301: 'Moved Permanently',
302: 'Found',
304: 'Not Modified',
400: 'Bad Request',
401: 'Unauthorized',
403: 'Forbidden',
404: 'Not Found',
405: 'Method Not Allowed',
409: 'Conflict',
422: 'Unprocessable Content',
429: 'Too Many Requests',
500: 'Internal Server Error',
502: 'Bad Gateway',
503: 'Service Unavailable',
};
async function fetchWithStatusHandling(url, options = {}) {
try {
const response = await fetch(url, options);
const category = getStatusCategory(response.status);
switch (category) {
case '2xx':
if (response.status === 204) return { data: null, status: 204 };
return { data: await response.json(), status: response.status };
case '4xx':
const clientError = await response.json().catch(() => ({}));
throw {
status: response.status,
statusText: STATUS_CODES[response.status] || response.statusText,
message: clientError.message || `Client error: ${response.status}`,
isRetryable: response.status === 429,
retryAfter: response.headers.get('Retry-After'),
};
case '5xx':
throw {
status: response.status,
statusText: STATUS_CODES[response.status] || response.statusText,
message: `Server error: ${response.status}`,
isRetryable: [502, 503, 504].includes(response.status),
};
default:
throw new Error(`Unexpected status code: ${response.status}`);
}
} catch (error) {
if (error.status) throw error;
throw { status: 0, message: 'Network error', isRetryable: true };
}
}