RFC 란 ?
"의견을 요청하는 문서"라는 의미로,
국제 인터넷 표준화 기구(IETF; Internet Engineering Task Force)에서 관리하는 기술 표준으로
HTTP 상태 코드는 클라이언트의 요청에 대해 서버가 어떻게 응답했는지 나타내는 표준화된 숫자 코드입니다.
각 상태 코드는 요청의 처리 결과를 명확히 전달하기 위해 분류됩니다
1xx (정보 응답)
1xx 상태 코드는 서버가 요청을 받았으며 처리가 진행 중임을 나타냅니다. 이 응답은 임시적인 상태로, 클라이언트는 계속해서 요청을 진행할 수 있습니다.
100 (Continue)
: 요청의 첫 번째 부분을 받았으며, 나머지 요청을 계속해서 보낼 수 있음을 나타냅니다.
101 (Switching Protocols)
: 클라이언트가 요청한 프로토콜로 서버가 전환하고 있음을 나타냅니다.
102 (Processing)
: 서버가 요청을 처리 중임을 나타냅니다. (RFC 2518)
주의: 1xx 상태 코드는 주로 HTTP/1.1 이상에서 사용되며, 대부분의 클라이언트에서는 실험적인 상태로만 사용됩니다.
2xx (성공)
2xx 상태 코드는 서버가 요청을 정상적으로 처리했음을 의미합니다. 이 범주에 속한 상태 코드는 주로 요청에 대한 성공적인 결과를 나타냅니다.
200 (OK)
: 요청이 성공적으로 처리되었습니다. 서버는 요청된 페이지를 제공하거나 처리한 데이터를 반환합니다.
201 (Created)
: 요청이 성공적으로 처리되어 새로운 리소스가 생성되었습니다.
202 (Accepted)
: 서버가 요청을 접수했지만 아직 처리가 완료되지 않았습니다.
204 (No Content)
: 요청을 처리했지만, 응답 본문에 콘텐츠가 없습니다.
206 (Partial Content)
: 요청에 대해 일부 콘텐츠만 반환되었습니다.
3xx (리다이렉션 완료)
3xx 상태 코드는 클라이언트가 요청을 완료하려면 추가적인 작업을 해야 함을 나타냅니다. 보통 리다이렉션이 필요합니다.
301 (Moved Permanently)
: 요청한 리소스가 영구적으로 다른 위치로 이동했음을 나타냅니다. 클라이언트는 자동으로 새 위치로 리다이렉트됩니다.
302 (Found)
: 요청한 리소스가 일시적으로 다른 위치에 있으며, 추후 요청은 원래 위치로 해야 함을 나타냅니다.
304 (Not Modified)
: 요청한 리소스가 수정되지 않았으므로 서버는 페이지를 다시 전송하지 않고, 클라이언트에게 이미 저장된 캐시를 사용할 것을 권장합니다.
307 (Temporary Redirect)
: 리소스가 임시로 다른 위치로 이동했으며, 클라이언트는 향후 요청 시 원래 위치를 계속 사용해야 함을 나타냅니다.
4xx (클라이언트 오류)
4xx 상태 코드는 클라이언트의 요청에 오류가 있음을 나타냅니다. 서버는 클라이언트가 요청을 잘못 보냈다고 판단합니다.
400 (Bad Request)
: 서버가 요청을 이해할 수 없거나 구문 오류가 있습니다.
401 (Unauthorized)
: 인증이 필요합니다. 클라이언트가 인증되지 않은 상태에서 보호된 리소스에 접근하려고 시도했을 때 발생합니다.
403 (Forbidden)
: 요청이 거부되었습니다. 클라이언트는 인증되었지만 해당 리소스에 대한 접근 권한이 없습니다.
404 (Not Found)
: 요청한 리소스를 서버에서 찾을 수 없습니다. 리소스가 삭제되었거나 존재하지 않을 수 있습니다.
405 (Method Not Allowed)
: 요청된 메소드를 서버가 지원하지 않습니다. 예를 들어, GET 요청에 대해 POST가 허용되지 않는 경우입니다.
406 (Not Acceptable)
: 서버가 요청한 콘텐츠 형식을 제공할 수 없습니다.
407 (Proxy Authentication Required)
: 프록시 서버 인증이 필요합니다.
408 (Request Timeout)
: 서버가 요청을 처리할 시간을 초과했습니다.
429 (Too Many Requests)
: 사용자가 일정 시간 동안 너무 많은 요청을 보냈습니다.
5xx (서버 오류)
5xx 상태 코드는 서버가 요청을 처리할 수 없음을 나타냅니다. 서버 오류로 인해 요청이 실패한 경우에 사용됩니다.
500 (Internal Server Error)
: 서버가 예기치 못한 오류로 요청을 처리할 수 없습니다.
502 (Bad Gateway)
: 서버가 게이트웨이 또는 프록시 역할을 하고 있을 때, 업스트림 서버에서 잘못된 응답을 받았을 때 발생합니다.
503 (Service Unavailable)
: 서버가 과중하거나 유지보수 중이어서 요청을 처리할 수 없습니다.
504 (Gateway Timeout)
: 게이트웨이나 프록시 서버가 업스트림 서버로부터 제때 응답을 받지 못했을 때 발생합니다.
505 (HTTP Version Not Supported)
: 서버가 요청에 사용된 HTTP 프로토콜 버전을 지원하지 않습니다.
401 vs 403: 인증과 권한의 차이
401 (Unauthorized)
: 인증이 필요합니다. 클라이언트가 인증되지 않았거나 인증 정보가 잘못된 경우 발생합니다.
403 (Forbidden)
: 인증이 되어도 해당 리소스에 대한 접근 권한이 없는 경우 발생합니다.
예: 로그인하지 않은 사용자가 로그인해야 하는 페이지에 접근하려면 401을 받으며, 로그인은 했지만 권한이 없는 페이지에 접근하려면 403을 받습니다.
결론
HTTP 상태 코드는 서버와 클라이언트 간의 통신에서 중요한 역할을 합니다. 상태 코드별로 정확한 의미를 이해하고, 이를 통해 문제를 빠르게 해결할 수 있습니다. 각 상태 코드를 명확히 이해하고 적절하게 처리하는 것이 웹 개발에서 중요한 부분입니다.
'Error Handling' 카테고리의 다른 글
77. [Error Handling] [JAVA] 디버깅 방법: System.out.println() 활용하기 (0) | 2025.01.15 |
---|---|
75. [Error Handling] [JAVA] 기존 테이블 복사 시 발생할 수 있는 오류 7가지 (0) | 2025.01.14 |
72. [Error Handling] [JAVA] Git 설치시 오류 (1) | 2025.01.13 |
67. [Error Handling] [JAVA] JWT expired (JWT 토큰만료) (0) | 2025.01.12 |
66. [Error Handling] [JAVA] API 어노테이션 미처리 Error (0) | 2025.01.12 |