100~500 상태코드
1xx 상태 코드는 요청이 수신되어 처리 중임을 나타내는 정보 응답 코드입니다. 주로 다음과 같은 경우에 사용됩니다.
1xx 상태 코드 사용 사례
100 Continue
- 클라이언트가 서버에 큰 데이터를 전송하기 전, 서버가 요청을 받아들일 준비가 되었는지 확인하는 경우 사용됩니다.
- 클라이언트는 먼저 요청 헤더만 보내고, 서버로부터 100 Continue 응답을 받으면 본문 데이터를 전송합니다.
101 Switching Protocols
- 클라이언트가 프로토콜 전환을 요청했을 때 서버가 전환에 동의함을 나타내는 경우 사용됩니다.
- 예를 들어 HTTP에서 WebSocket 프로토콜로 전환할 때 사용할 수 있습니다.
102 Processing (WebDAV)
- WebDAV 프로토콜에서 서버가 요청을 받아 처리 중임을 알리는 경우 사용됩니다.
103 Early Hints (HTTP/2)
- HTTP/2에서 서버가 요청 처리 전에 미리 응답 헤더를 보내는 경우 사용됩니다.
- 클라이언트는 이 정보를 활용하여 리소스 로딩을 미리 준비할 수 있습니다.
1xx 상태 코드는 주로 HTTP 프로토콜 자체에서 사용되며, 실제 웹 애플리케이션에서는 거의 사용되지 않습니다. 그래서 잘 알려지지 않은 편입니다.
200 OK
- 가장 일반적인 성공 상태 코드입니다.
- 클라이언트의 요청을 성공적으로 처리했으며, 요청한 리소스를 응답 본문에 포함하고 있습니다.
201 Created
- 새로운 리소스가 성공적으로 생성되었음을 나타냅니다.
- POST 요청 등으로 새 리소스를 생성한 경우 사용됩니다.
202 Accepted
- 요청은 유효하지만 아직 처리되지 않았음을 나타냅니다.
- 비동기 처리를 위해 사용되며, 처리 완료 시점에 별도의 응답이 전송됩니다.
204 No Content
- 요청은 성공했지만 응답 본문에 포함할 데이터가 없음을 나타냅니다.
- 리소스 삭제 등의 작업 후 사용될 수 있습니다.
3xx 상태 코드는 리다이렉션(redirection)을 의미하며,
클라이언트의 요청을 완료하기 위해 추가 작업이 필요함을 나타냅니다.
주요 3xx 상태 코드와 사용 사례는 다음과 같습니다.
301 Moved Permanently
- 리소스의 URI가 영구적으로 변경되었음을 나타냅니다.
- 예를 들어 웹사이트 주소가 변경되었을 때 사용됩니다.
302 Found (HTTP 1.1 이전 버전)
- 리소스가 임시적으로 다른 URI로 이동했음을 나타냅니다.
- 예를 들어 로그인 후 리디렉션되는 경우 사용됩니다.
303 See Other (HTTP 1.1)
- 클라이언트가 다른 URI에서 응답을 검색해야 함을 나타냅니다.
- POST 요청에 대한 응답으로 사용되어 중복 제출을 방지합니다(PRG 패턴).
304 Not Modified
- 클라이언트에 의해 요청된 리소스가 변경되지 않았음을 나타냅니다.
- 캐시 유효성 검사 시 사용되어 불필요한 데이터 전송을 줄입니다.
307 Temporary Redirect
- 리소스가 임시적으로 다른 URI로 이동했음을 나타냅니다.
- 302와 유사하지만 HTTP 1.1에서 추가된 상태 코드입니다.
308 Permanent Redirect
- 리소스가 영구적으로 다른 URI로 이동했음을 나타냅니다.
- 301과 유사하지만 HTTP 1.1에서 추가된 상태 코드입니다.
따라서 3xx 상태 코드는 리소스의 위치 변경, 캐시 유효성 검사, 중복 제출 방지 등의 상황에서 사용됩니다. 클라이언트는 이 상태 코드를 받으면 추가 작업(리디렉션 등)을 수행
4xx 상태 코드는 클라이언트 오류를 나타내며, 다음과 같은 경우에 사용됩니다:
- 클라이언트의 요청이 잘못되었거나 유효하지 않은 경우
- 요청 메시지의 구문이 잘못되었거나 필수 파라미터가 누락된 경우
- 요청한 리소스가 존재하지 않는 경우
- 클라이언트가 인증되지 않은 요청을 보낸 경우
- 클라이언트에게 권한이 없어 요청을 거부해야 하는 경우
주요 4xx 상태 코드
400 Bad Request
클라이언트가 잘못된 요청을 보냈을 때 사용됩니다.
요청 구문 오류, 잘못된 파라미터, API 스펙 불일치 등의 경우에 해당합니다.
401 Unauthorized
클라이언트가 인증되지 않은 요청을 보냈을 때 사용됩니다.
403 Forbidden
클라이언트에게 요청 자원에 대한 권한이 없어 요청을 거부할 때 사용됩니다.
404 Not Found
요청한 리소스가 서버에 존재하지 않을 때 사용됩니다.
4xx 상태 코드를 받으면 클라이언트 측에서 요청을 수정하여 재전송해야 합니다.
동일한 요청을 반복해도 실패할 것이기 때문입니다.
500 Internal Server Error
- 서버에 예기치 못한 상황이 발생하여 요청을 처리할 수 없는 경우입니다.
- 서버 사용량 폭주, 백엔드 스크립트 오류 등이 원인일 수 있습니다.
- 서버 스크립트 오류, 데이터베이스 문제, 서버 과부하 등 다양한 원인
502 Bad Gateway
- 서버가 게이트웨이나 프록시 등 중간 서버로부터 유효하지 않은 응답을 받은 경우입니다.
503 Service Unavailable
- 서버가 과부하나 유지보수로 인해 현재 서비스를 제공할 수 없는 상태입니다.
- 일시적인 상황이므로 잠시 후 재시도하면 정상 응답할 수 있습니다.
504 Gateway Timeout
- 서버가 게이트웨이 시간 초과 때문에 응답을 받지 못한 경우입니다.
511 Network Authentication Required
- 클라이언트가 네트워크 액세스를 위해 인증이 필요한 경우입니다.
"게이트웨이"
"게이트웨이"라는 단어는 주로 502 Bad Gateway 상태 코드와 관련이 있습니다.
502 Bad Gateway 상태 코드는 다음과 같은 상황을 의미합니다:
- 웹 서버가 게이트웨이나 프록시 서버 역할을 하면서 업스트림 서버(웹 애플리케이션 서버 등)로부터 유효하지 않은 응답을 받은 경우입니다.
- 게이트웨이 또는 프록시 역할을 하는 서버가 그 뒷단의 서버로부터 잘못된 응답을 받았다는 의미입니다.
즉, 게이트웨이는
클라이언트와 웹 애플리케이션 서버 사이에서 중개자 역할을 하는 서버를 말합니다.
클라이언트의 요청을
웹 애플리케이션 서버로 전달하고,
그 응답을 다시 클라이언트에게 전달하는 역할을 합니다.
(클라이언트 요청 > 웹 애플리케이션 > 웹 애플리케이션 응답 > 클라이언트 )
500 Internal Server Error는 웹 애플리케이션 서버 자체에서 발생한 오류이므로,
게이트웨이와는 직접적인 관련이 없습니다.
500 에러는 서버 스크립트 오류, 데이터베이스 문제, 서버 과부하 등 다양한 원인으로 인해 발생할 수 있습니다