본문 바로가기
CS/데이터통신 & 네트워크

[네트워크] HTTP 상태코드: 200, 201, 204, 301, 302, 303, 304, 307, 308, 400, 401, 403, 404, 500, 503

by jangThang 2023. 7. 10.
반응형

 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 메시지 구조: 요청/응답 메시지 (시작라인, 헤더, 공백라인, 바디)

     

    [네트워크] HTTP 메시지 구조: 요청/응답 메시지 (시작라인, 헤더, 공백라인, 바디)

    HTTP 메시지 구조에 대해서 알아봅니다. HTTP는 시작 라인, 헤더, 공백 라인, 바디로 이루어져 있고 각 기능과 역할에 대해서 살펴보겠습니다. [ Contents ] 1. HTTP 메시지 구조 서버와 클라이언트는 HTTP

    star7sss.tistory.com

     

     

     

    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는 대중들에게도 유명한 오류죠.

     

    https://star7sss.tistory.com/tag/구현/수학

     Tistory에서 없는 페이지를 찾았을 때 뜨는 페이지입니다. 날것 그대로의 Not Found 페이지를 띄우진 않지만, 개발자도구로 보면 404 상태코드임을 알 수 있습니다.

     원래 '/'가 포함된 태그여도 url인코딩으로 변환해서 태그 페이지를 만들어줬으나, 언젠가부터 막았더군요. 보안상 막은 듯한데... 그러면 '구현/수학' 태그는 어떻게 하나... ㅠㅠ

     

     

    4) 500번대: 서버 오류

    - 500 Internal Server Error: 서버 내부 오류
    - 503 Service Unavailable: 서비스 이용 불가

     

     500번대는 서버로 인한 오류 메시지입니다. 500번대는 웹서버 프로그래밍을 하다 보면 꽤 자주 보게 됩니다. 서버 설정이 잘못되어 있으면 localhost가 500번으로 죽어버리죠.

     503번은 주로 많은 사람들이 동시에 이용할 때 간혹 볼 수 있습니다. 클라이언트의 요청을 받을 서버가 부족할 때 생기는 메시지로, 서버 과부하가 풀어지면 자연스레 해결됩니다. 이 때문에 500번대 오류는 새로고침을 하다 보면 정상적으로 응답이 올 때가 있습니다. (물론 새로고침할 때마다 서버에 GET요청이 갈 테니, 서버 입장에서는 죽을 맛이겠지만요.)

     

     

    star가 되고나서 Tistory

    반응형

    댓글