HTTP에서는 시작라인(Start Line)에 상태코드를 첨부합니다. 상태코드는 요청에 대한 응답을 압축한 코드로, 정상 실행 또는 오류발생에 대한 상태 메시지입니다.
이러한 HTTP 상태코드에 대해서 알아보고, 각각의 의미를 살펴보겠습니다.
[ Contents ]
1. HTTP 상태 코드
100번대 (Imformational): 처리 중
200번대 (Successful): 처리 완료
300번대 (Redirection): 추가 조치 필요
400번대 (Client Error): 클라이언트 오류
500번대 (Server Error): 서버 오류
응답 메시지의 시작 라인(Start Line)에는 HTTP 상태 코드가 포함되어 있습니다.
흔히 볼 수 있는 Not Found 404가 HTTP 상태 코드의 예시입니다. 클라이언트 요청에 대한 서버의 응답으로, 100의 자리에 따라 상태가 구분됩니다.
2023.07.07 - [CS] - [네트워크] HTTP 메시지 구조: 요청/응답 메시지 (시작라인, 헤더, 공백라인, 바디)
2. 대표적인 HTTP 상태
1) 200번대: 처리 완료
- 200 OK: 성공적으로 처리
- 201 Created: 성공적으로 생성
- 204 No Content: 성공적으로 수행했지만, 처리할 데이터 없음
200번대는 성공적으로 처리되었음을 뜻하는 상태 코드입니다. 다만 204와 같은 코드는 디버깅 시 유의해서 봐야 합니다.
보통 찾기 어려운 코드가 오류는 나지 않지만 비정상적으로 작동하는 경우입니다. 204는 오류는 없지만 처리할 데이터가 없는 경우입니다. 이는 데이터가 누락된 경우일 수도 있으므로 주의해야 합니다.
2) 300번대: 추가 조치 필요
(영구적인 리다이렉션: URI 영구변경)
- 301 Moved Permanently: 리다이렉션 요청 시, GET으로 변경
- 308 Permanent Redirect: 변경된 URI로 리다이렉션 요청
(일시적인 리다이렉션: URI 일시변경)
- 302 Found: 리다이렉션 요청 시, GET으로 변경될 수 있음
- 303 See Other: 리다이렉션 요청 시, GET으로 변경
- 307 Temporary Redirect: 변경된 URI로 리다이렉션 요청
(캐시 재사용)
- 304 Not Modified: 로컬 캐시 사용 요청 (리소스 변경되지 않음)
리다이렉션(Redirection)은 다른 주소(URL)로 다시 요청을 보내는 것을 뜻합니다. A라는 사이트에 접속했는데, 갑자기 B라는 사이트로 이동되는 경우가 '리다이렉션'에 해당하죠.
현재는 피싱사이트나 광고로 악용되어 크롬에선 기본값이 차단입니다. (팝업 및 리디렉션 차단)
그럼에도 결제 등에서 아직도 사용하기 때문에, 아마 '이 사이트에서는 팝업 및 리디렉션 허용'이라는 설정을 많이 하셨을 겁니다. 결제 완료 후 자동으로 주문완료 페이지로 이동하는 리다이렉션 로직이 보편적이며, 이는 중복 결제 방지를 위해 사용됩니다.
※ PRG 패턴 (Post-Redirect-Get): Post 요청 후 302 Found 응답으로, Get 리다이렉션 요청을 유도함
(새로고침으로 인해 중복 요청이 가는 오류를 막는 패턴)
3) 400번대: 클라이언트 오류
- 400 Bad Request: 잘못된 요청 전달 (파라미터 오류, API 스펙 등)
- 401 Unauthorized: 인증이 필요
- 403 Forbidden: 승인 거부 (권한 불충분)
- 404 Not Found: 리소스 부재 (숨겨진 리소스)
클라이언트에게 오류가 있는 상태코드입니다. 주로 잘못된 파라미터를 넘겼거나, 없는 페이지 주소를 접속할 때 발생합니다. 404 Not Found는 대중들에게도 유명한 오류죠.
Tistory에서 없는 페이지를 찾았을 때 뜨는 페이지입니다. 날것 그대로의 Not Found 페이지를 띄우진 않지만, 개발자도구로 보면 404 상태코드임을 알 수 있습니다.
원래 '/'가 포함된 태그여도 url인코딩으로 변환해서 태그 페이지를 만들어줬으나, 언젠가부터 막았더군요. 보안상 막은 듯한데... 그러면 '구현/수학' 태그는 어떻게 하나... ㅠㅠ
4) 500번대: 서버 오류
- 500 Internal Server Error: 서버 내부 오류
- 503 Service Unavailable: 서비스 이용 불가
500번대는 서버로 인한 오류 메시지입니다. 500번대는 웹서버 프로그래밍을 하다 보면 꽤 자주 보게 됩니다. 서버 설정이 잘못되어 있으면 localhost가 500번으로 죽어버리죠.
503번은 주로 많은 사람들이 동시에 이용할 때 간혹 볼 수 있습니다. 클라이언트의 요청을 받을 서버가 부족할 때 생기는 메시지로, 서버 과부하가 풀어지면 자연스레 해결됩니다. 이 때문에 500번대 오류는 새로고침을 하다 보면 정상적으로 응답이 올 때가 있습니다. (물론 새로고침할 때마다 서버에 GET요청이 갈 테니, 서버 입장에서는 죽을 맛이겠지만요.)
'CS > 데이터통신 & 네트워크' 카테고리의 다른 글
[네트워크] HTTP 헤더: Referer, User-Agent, Server, Host (0) | 2023.07.11 |
---|---|
[네트워크] HTTP 컨텐츠 협상 (Contents Negotiation): Accept, Accept-Charset, Accept-Encoding, Accept-Language (0) | 2023.07.11 |
[네트워크] HTTP 메서드의 속성: 안전, 멱등, 캐시가능 (0) | 2023.07.10 |
[네트워크] HTTP 메서드: GET, POST, PUT, PATCH, DELETE (0) | 2023.07.10 |
[네트워크] HTTP 메시지 구조: 요청/응답 메시지 (시작라인, 헤더, 공백라인, 바디) (0) | 2023.07.07 |
댓글