Post

[네트워크] 응용 계층(Application) - HTTP 응답 상태 코드

HTTP 응답 상태 코드(HTTP Response Status Codes)

HTTP 응답 상태 코드는 클라이언트가 서버에 요청을 보낼 때 서버가 반환하는 응답의 상태를 나타낸다.

이 코드들은 다섯 가지 카테고리로 나뉘며, 각 카테고리는 응답의 성격을 대략적으로 나타낸다.

상태 코드 범위카테고리설명
1xx정보 응답요청을 받았으며 프로세스를 계속한다는 임시 응답
2xx성공요청이 성공적으로 수행됨
3xx리다이렉션요청 완료를 위한 추가 동작이 필요함
4xx클라이언트 에러클라이언트 측 오류로 요청을 수행할 수 없음
5xx서버 에러서버 측 오류로 요청을 수행할 수 없음

1xx: 정보 응답

상태 코드영어 설명한국어 설명
100Continue계속: 클라이언트는 요청을 계속해야 함
101Switching Protocols프로토콜 전환: 요청에 따라 서버가 프로토콜을 전환
102Processing (WebDAV)처리 중: 요청을 처리하고 있으나 아직 완료되지 않음 (WebDAV)

2xx: 성공

상태 코드영어 설명한국어 설명
200OK정상: 요청이 성공적으로 처리됨
201Created생성됨: 요청이 성공적으로 이행되었고 새로운 리소스가 생성됨
202Accepted수락됨: 요청이 수락되었으나 아직 처리되지 않음
203Non-Authoritative Information비공식 정보: 반환된 메타정보는 원 서버의 메타정보와 다를 수 있음
204No Content내용 없음: 요청은 성공했으나 전송할 내용이 없음
205Reset Content내용 초기화: 요청은 성공했으며 클라이언트는 문서 보기를 초기화해야 함
206Partial Content부분 내용: 요청이 성공적으로 이행되었고 일부 내용만 전송됨
207Multi-Status (WebDAV)다중 상태: WebDAV에서 사용. 여러 상태 코드가 적합할 수 있음
208Already Reported (WebDAV)이미 보고됨: WebDAV의 순환 참조를 방지하기 위해 사용됨
226IM UsedIM 사용됨: 서버가 클라이언트의 GET 요청에 대해 Instance Manipulations를 적용했음

3xx: 리다이렉션

상태 코드영어 설명한국어 설명
300Multiple Choices다양한 선택: 요청한 리소스가 여러 형태로 존재할 때 사용자나 사용자 에이전트가 선택할 수 있음
301Moved Permanently영구적으로 이동됨: 요청한 리소스가 새 위치로 영구적으로 이동되었음을 나타냄
302Found (Previously “Moved temporarily”)발견됨(이전에 “임시로 이동”): 요청한 리소스가 일시적으로 다른 위치로 이동했음을 나타냄
303See Other다른 것을 참조: 요청에 대한 응답이 다른 URI에서 찾을 수 있으며, GET 메서드를 사용해야 함을 나타냄
304Not Modified수정되지 않음: 클라이언트가 조건부 요청을 했을 때 리소스가 변경되지 않았음을 나타냄
305Use Proxy프록시 사용: 요청된 리소스는 프록시를 통해서만 접근해야 함을 나타냄 (보안상의 이유로 현재 사용되지 않음)
307Temporary Redirect임시 리다이렉션: 요청한 리소스가 일시적으로 다른 URI에 위치함을 나타냄. 요청 메서드와 본문은 변경되지 않음
308Permanent Redirect영구 리다이렉션: 요청한 리소스가 다른 URI로 영구적으로 이동했음을 나타냄. 301과 비슷하지만 HTTP 메서드가 변경되지 않음

4xx: 클라이언트 에러

상태 코드영어 설명한국어 설명
400Bad Request서버가 요청을 이해할 수 없음
401Unauthorized요청이 인증을 필요로 함
402Payment Required예약됨 (실제 사용되지 않음)
403Forbidden서버가 요청을 거부함
404Not Found서버가 요청한 리소스를 찾을 수 없음
405Method Not Allowed요청된 메서드는 리소스에서 사용할 수 없음
406Not Acceptable요청한 리소스는 요청 헤더에서 지정한 조건으로만 응답할 수 없음
407Proxy Authentication Required프록시 인증이 필요함
408Request Timeout서버가 요청을 기다리는 동안 클라이언트가 요청을 보내지 않음
409Conflict요청이 서버의 현재 상태와 충돌
410Gone요청한 리소스가 영구적으로 이동되었으며, 새 위치가 알려지지 않음
411Length Required유효한 Content-Length 헤더 없이는 서버가 요청을 수락하지 않음
412Precondition Failed서버가 요청 헤더에서 주어진 전제 조건을 만족하지 못함
413Payload Too Large요청 엔티티가 서버에 의해 정의된 한도보다 큼
414URI Too Long요청 URI가 서버에서 해석하기에 너무 길음
415Unsupported Media Type요청 엔티티의 미디어 유형이 지원되지 않음
416Range Not Satisfiable요청한 범위가 대상 URI의 데이터를 초과함
417Expectation Failed서버가 요청의 Expect 헤더 필드에서 주어진 기대를 만족시킬 수 없음
418I’m a teapot서버가 찻주전자이며 커피를 끓일 수 없음 (농담 코드)
421Misdirected Request요청이 잘못된 서버로 전송되었으며 서버가 요청을 처리할 수 없음
422Unprocessable Entity요청은 이해했으나, 처리할 수 없는 지시를 포함 (WebDAV)
423Locked리소스가 잠김 (WebDAV)
424Failed Dependency요청 실패는 이전 요청의 실패 때문 (WebDAV)
425Too Early서버가 요청을 처리하기에는 너무 이르며, 잠재적인 재생 공격을 방지하기 위함
426Upgrade Required클라이언트는 요청을 계속하기 위해 프로토콜을 업그레이드해야 함
428Precondition Required서버는 요청이 조건부 요청이 되기를 원함
429Too Many Requests클라이언트가 주어진 시간 동안 너무 많은 요청을 보냄
431Request Header Fields Too Large서버는 요청의 헤더 필드가 너무 커서 처리할 수 없음
451Unavailable For Legal Reasons법적 이유로 인해 서버가 요청을 처리할 수 없음

5xx: 서버 에러

상태 코드영어 설명한국어 설명
500Internal Server Error내부 서버 오류: 서버가 요청 처리 중 예기치 못한 상황에 직면함
501Not Implemented구현되지 않음: 서버가 요청의 기능을 지원하지 않음
502Bad Gateway잘못된 게이트웨이: 게이트웨이나 프록시 서버가 잘못된 응답을 받음
503Service Unavailable서비스 이용 불가: 서버가 오버로드되었거나 유지보수 중임으로 잠시 서비스를 제공할 수 없음
504Gateway Timeout게이트웨이 타임아웃: 게이트웨이나 프록시 서버가 상위 서버로부터 시간 내에 응답을 받지 못함
505HTTP Version Not SupportedHTTP 버전이 지원되지 않음: 서버가 요청에 사용된 HTTP 버전을 지원하지 않음
506Variant Also Negotiates변형도 협상: 서버에 내부 구성 오류가 있어 선택된 변형이 자체에 대한 적절한 참조를 통해 협상되고 있음
507Insufficient Storage (WebDAV)저장공간 부족 (WebDAV): 서버가 요청을 처리하기 위한 충분한 저장공간이 없음
508Loop Detected (WebDAV)루프 감지 (WebDAV): 서버가 요청 처리 중 무한 루프를 감지함
510Not Extended확장되지 않음: 요청의 추가 확장을 얻기 위한 필요한 정책을 충족시키지 못함
511Network Authentication Required네트워크 인증 필요: 클라이언트가 네트워크에 액세스하기 위해 인증해야 함

HTTP 통신에서 서버는 일반적으로 하나의 HTTP 요청에 대해 단일 상태 코드로 응답한다. HTTP 프로토콜의 설계에 따른 것으로, 각 요청/응답 사이클이 한 번의 상호작용을 나타내기 때문이다.

그러나 복잡한 웹 애플리케이션에서는 다음과 같은 상황에서 여러 다른 상태 정보를 전달할 수도 있다.

  • 웹DAV(Web-based Distributed Authoring and Versioning) 웹DAV의 207 Multi-Status 응답은 하나의 요청이 여러 자원에 대해 수행되었을 때 다양한 상태 코드와 메시지를 포함할 수 있는 XML 본문을 통해 여러 결과를 반환할 수 있다. 이는 서버가 각각의 하위 요청에 대한 결과를 별도로 보고할 수 있게 한다.

  • API 디자인 일부 REST API나 복잡한 웹 서비스는 특정 요청에 대해 복합적인 작업을 수행할 수 있으며, 이 때 각각의 작업 결과를 나타내기 위해 내부적으로 여러 상태 정보를 관리할 수 있다. 하지만 이러한 내부 상태 정보는 일반적으로 API 응답 본문 내에 구조화된 데이터 형태(예: JSON, XML)로 클라이언트에게 전달되며, HTTP 상태 코드 자체는 최종적인 요청의 성공 또는 실패를 나타내는 단일 값으로 반환된다.

This post is licensed under CC BY 4.0 by the author.