본문 바로가기

Network

http 상태코드

앞전에 http가 무엇이고 http의 동작원리에 대해서 학습했다. 기본적으로 http는 클라이언트 서버 구조로 클라이언트가 요청을 보내면 서버는 요청에 맞춰 응답을 한다. 이때 서버는 각 요청에 따른 상태코드를 start-line에 넣어서 응답해준다. 이 상태 코드를 통해 어떠한 응답을 하는지 유추할 수 있는데, 백엔드 개발을 하다보면 이를 이해하고 있는것이 도움이 돼서 정리를 하고자 한다.

 

1xx

요청이 수신되어 처리중 (Informational)

* 거의 사용하지 않는다.

2xx

요청 정상 (Successful)

  • 200 OK
    요청이 성공적으로 되었다.
  • 201 Created
    요청이 성공적이었으며 그 결과로 새로운 리소스가 생성되었다. 이 응답은 일반적으로 POST 요청 또는 일부 PUT 요청 이후에 따라온다.
  • 202 Accepted
    요청을 수신하였지만 그에 응하여 행동할 수 없다. 다른 프로세스에서 처리 또는 서버가 요청을 다루고 있거나 배치 프로세스를 하고 있는 경우를 위해 만들어졌다.
  • 204 No content
    요청에 대해서 보내줄 수 있는 콘텐츠가 없지만, 헤더는 의미있을 수 있다.

3xx

요청을 완료하기 위해서는 추가 행동이 필요 (Redirection)

  • 300
    요청에 대해서 하나 이상의 응답이 가능하다.
  • 301
    이 응답 코드는 요청한 리소스의 URI가 변경되었음을 의미한다. 변경된 URI로 반환해준다.
  • 302
    이 응답 코드는 요청한 리소스의 URI가 일시적으로 변경되었음을 의미한다. 변경된 URI로 반환해준다.
  • 303
    클라이언트가 요청한 리소스를 다른 URI에서 GET 요청을 통해 얻어야 할 때, 서버가 클라이언트로 직접 보내는 응답이다
    .
  • 307
    302 응답 코드와 내용이 같으며, 사용자 에이전트가 반드시 사용된 HTTP 메소드를 변경하지 말아야 하는 점이 추가되었다. 만약 첫 요청에 POST가 사용되었다면, 두번째 요청도 반드시 POST를 사용해야 한다.
  • 308
    301 응답 코드와 내용이 같으며, 307과 마찬가지로 첫번째(변경되기 전 URI에 요청) 두번째(리다이렉트된 URI에 요청) 모두 같은 HTTP 메소드를 사용해야 한다는 의미를 가졌다.

4xx

클라이언트 오류 (Client Error)

  • 400 Bad Request 
    잘못된 문법으로 인하여 서버가 요청을 이해할 수 없음을 의미
  • 401 Unauthorized 
    인증받지 않은 클라이언트가 요청했음을 의미
  • 403 Forbidden
    클라이언트는 콘텐츠에 접근할 권리를 가지고 있지 않다. 401과 다른점은 서버가 클라이언트가 누군지 알고 있다는 것이다.
  • 404 Not Found
    서버는 요청받은 리소스를 찾을 수 없다. 브라우저에서는 알려지지 않은 URL을 의미

5xx

서버 오류 (Server Error)

  • 500 Intenal Server Error
    서버가 처리 방법을 모르는 상황이 발생하여, 서버가 처리할 방법을 알 수 없다.
  • 503 Service Unavailable
    서버가 요청을 처리할 준비가 되지 않았다. 일반적인 원인은 유지보수를 위해 작동이 중단되거나 과부하가 걸렸을 때이다. 헤더에 retry-after를 응답하여 서비스를 복구하기 전 예상 시간을 담아 보낸다.

 

위와 같이 http 응답코드에 대해서 간단하게 알아봤다. 모든 응답코드에 대해서 살펴보지는 않았지만, 응답코드의 앞자리 숫자만 확인하더라도 어디서 문제가 발생했는지 알 수 있다. 백엔드 개발을 하다보면 응답코드를 자주 보게 될것인데, 미리 알고 친해지면 좋을것 같다.

'Network' 카테고리의 다른 글

Session, Cookie, Cache  (0) 2023.01.31
REST API  (2) 2023.01.19
HTTP  (2) 2022.11.27
TCP & UDP  (0) 2022.11.10