[FE] HTTP 상태 코드가 뭘까요?
HTTP란?
HTTP(Hypertext Transfer Protocol)는 웹 서버와 웹 클라이언트 사이에서 데이터를 주고받기 위해 사용하는 통신 방식으로 TCP/IP 프로토콜 위에서 동작합니다. 즉, 우리가 웹을 이용하려면 웹 서버와 웹 클라이언트는 각각 TCP/IP 동작에 필수적인 IP 주소를 가져야 합니다.
HTTP란 이름대로라면 하이퍼텍스트(Hypertext)만 전송할 수 있어 보이지만, 실제로는 HTML이나 XML과 같은 하이퍼텍스트뿐 아니라 이미지, 음성, 동영상, Javascript, PDF와 각종 문서 파일 등 컴퓨터에서 다룰 수 있는 데이터라면 무엇이든 전송할 수 있습니다.
HTTP 상태 코드란?
이러한 HTTP 통신 과정에서, 웹 서버는 클라이언트의 요청에 대한 처리 결과를 상태 코드를 통해 알려줍니다. 예를 들어, 웹 브라우저에서 'www.example.com'을 방문할 때, 서버는 페이지가 성공적으로 로드되었다면 '200' 코드를, 페이지를 찾을 수 없다면 '404' 코드를 반환합니다. 이러한 상태 코드는 3자리 숫자로 구성되어 있으며, 각각의 숫자가 특정한 의미를 담고 있습니다.
상태 코드의 구조
HTTP 상태 코드는 3자리 숫자로 구성되며, 첫 번째 숫자는 응답의 종류를 나타내고 나머지 두 숫자는 세부 상태를 구분합니다. 상태 코드는 다섯 가지 클래스로 분류됩니다.
상태 코드의 구조
HTTP 상태 코드는 3자리 숫자로 구성되며, 첫 번째 숫자는 응답의 종류를 나타내고 나머지 두 숫자는 세부 상태를 구분합니다. 상태 코드는 다섯 가지 클래스로 분류됩니다.
1XX - 정보 응답
정보 응답은 요청이 수신되어 처리 중임을 나타냅니다. HTTP 1.1에서 도입된 이 응답들은 서버가 요청을 처리하는 중간 상태를 클라이언트에 알려줍니다. 대표적인 예로:
- 100 Continue: 지금까지의 진행 상태가 정상이며 클라이언트가 계속 요청을 이어가도 됨을 의미
- 101 Switching Protocol: 클라이언트의 프로토콜 전환 요청을 수락함을 의미
2XX - 성공 응답
서버가 클라이언트의 요청을 성공적으로 처리했음을 나타냅니다. 가장 흔히 볼 수 있는 코드들은:
- 200 OK: 요청이 성공적으로 처리됨
- 201 Created: 새로운 리소스가 성공적으로 생성됨
- 204 No Content: 요청은 성공했으나 전송할 콘텐츠가 없음
3XX - 리다이렉션 응답
클라이언트의 요청을 완료하기 위해 추가 작업이 필요함을 나타냅니다. 주요 코드는:
- 301 Moved Permanently: 리소스가 새로운 URL로 영구 이동됨
- 302 Found: 리소스가 임시로 다른 URL에 있음
- 304 Not Modified: 캐시된 리소스가 여전히 유효함
4XX - 클라이언트 에러 응답
클라이언트의 요청에 문제가 있음을 나타냅니다. 자주 발생하는 코드들:
- 400 Bad Request: 잘못된 요청 구문
- 401 Unauthorized: 인증이 필요한 리소스
- 403 Forbidden: 접근 권한 없음
- 404 Not Found: 요청한 리소스를 찾을 수 없음
5XX - 서버 에러 응답
서버 측의 문제로 요청을 처리할 수 없음을 나타냅니다. 주요 코드는:
- 500 Internal Server Error: 서버 내부 오류
- 502 Bad Gateway: 게이트웨이 오류
- 503 Service Unavailable: 서버가 일시적으로 요청을 처리할 수 없음
- 504 Gateway Timeout: 게이트웨이 시간 초과
활용
이러한 상태 코드는 웹 애플리케이션 개발과 문제 해결 과정에서 중요한 역할을 합니다. 개발자는 이를 통해 요청의 성공 여부를 판단하고, 오류가 발생했을 때 그 원인을 파악할 수 있습니다. 예를 들어, 사용자가 웹사이트에 접속할 때 404 에러가 발생한다면 요청한 페이지가 존재하지 않는다는 것을 알 수 있고, 500 에러가 발생한다면 서버에 문제가 있다는 것을 즉시 파악할 수 있습니다.