티스토리 뷰

HTTP 통신은 개발자라면 그림자처럼 붙어 다니는 기본적인 항목이다. 어떤 분야의 개발자든 필수라고 생각된다. 프런트엔드, 백엔드 등 분야가 다르다고 피할 수 있는 부분은 아니다. 개발할 때도 필요하지만 커뮤니케이션할 때도 필요하다.

기본적으로 HTTP 통신의 응답 결과에는 Status Code가 존재한다. Status Code 별로 의미하는 바가 다르기 때문이다. 모든 HTTP 응답 코드는 5개로 크게 분류 된다. 상태 코드의 첫 번째 숫자는 응답의 클래스를 정의하고 마지막 두 자리는 클래스나 분류 역할을 하지 않는다. HTTP 응답 코드 중 1xx 대역 코드를 제외한 자주 사용되는 4가지 분류를 알아보자. 

 

2xx : 성공

3xx : 리다이렉트

4xx : 클라이언트 오류

5xx : 서버 오류

 

 

2xx(성공)


요청을 성공적으로 받았고, 이해했으며, 받아들여졌다는 의미이다.

  • 200(OK/성공) : 성공적으로 처리했을 때 사용한다. 가장 일반적인 HTTP 상태이다. ★★★
  • 201(Created/작성됨) : 요청이 성공적으로 처리되어 새 리소스가 만들어진 상태이다.
  • 202(Accepted/허용됨) : 요청이 받아들여졌지만 처리되지 않은 상태이다.
  • 203(Non-Authoritative Information/신뢰할 수 없는 정보)
  • 204(No Content/컨텐츠 없음) : 성공적으로 처리했지만 컨텐츠를 제공하지 않는다. (문서 내용 없음)
  • 205(Reset Content/ 컨텐츠 재설정) : 성공적으로 처리했지만 컨텐츠를 제공하지 않는다. 204 코드와 달리 이 응답은 요청자가 문서 보기를 재설정할 것을 요구한다. (양식 비우기)
  • 206(Partial Content/일부 컨텐츠) : 지정된 범위만큼의 요청을 받은 상태이다. (wget 이어받기)

 

3xx(리다이렉션)


이 요청을 완료하기 위해서는 리다이렉션이 이루어져야 한다는 의미이다.

  • 300(Multiple Choices/여러 선택항목) : 요청에 따라 여러 조치를 선택할 수 있다. 서버가 클라이언트에 따라 수행할 작업을 선택하거나, 클라이언트가 선택할 수 있는 작업 목록을 제공한다.
  • 301(Moved Permanently/영구 이동) : 요청된 리소스에 새로운 URL이 지정되어 있기 때문에 이후에는 새 URL를 사용해야 한다는 상태이다.(영구적 URL) Location 헤더로 다른 위치를 알려줘야 한다.
  • 302(Found/임시 이동) : 요청된 리소스에 새로운 URL이 지정되어 있기 때문에 이후에는 새 URL를 사용해야 한다는 상태이다.(임시적 URL) Location 헤더로 다른 위치를 알려줘야 한다.

 

  • 303(See Other/기타 위치 보기)
  • 304(Not Modified/수정되지 않음) : 요청한 리소스가 마지막 요청 이후 변경된 적이 없을 때 다시 요청이 온 경우의 상태이다. 브라우저에서 Cache 리소스를 사용하도록 알려준다.
  • 305(Use Proxy/프록시 사용) : 프록시를 사용하여 요청한 페이지만 액세스 할 수 있다.
  • 307(Temporary Redirect/임시 리다이렉션)
  • 308(Permanent Redirect/영구 리다이렉션)

 

4xx(클라이언트 오류)


클라이언트의 잘못된 요청으로 서버에서 처리하지 못해 요청이 올바르지 않다는 의미이다.

  • 400(Bad Request/잘못된 요청) : 요청 자체가 잘못되었을 때 사용되는 코드이다. ★★
  • 401(Unauthorized/권한 없음) : 요청 처리에 인증이 필요한 경우를 의미한다. 권한보다는 인증에 더 가깝게 해석해야 한다. ★★
  • 403(Forbidden/접근 금지) : 요청 처리에 권한이 필요한 경우를 의미한다. 관리자 페이지 접근 등을 차단하는 경우, 파일 시스템 퍼미션, 허가되지 않은 IP 주소 접근 등 ★★
  • 404(Not Found/찾을 수 없음) : 클라이언트가 요청한 리소스가 서버에 존재하지 않음 ★★★
  • 405(Method Not Allowed/허용되지 않은 메서드) : 허용되지 않는 HTTP 메서드로 요청했을 경우(Post 방식으로 요청을 받는 서버에 GET으로 요청을 한 경우, PUT, DELETE 등 서버에 허용되지 않은 메서드로 요청을 한 경우) ★★
  • 406(Not Acceptable/허용되지 않음) : 요청은 정상이나 서버에서 받아들일 수 없는 요청일 때 사용한다.
  • 407(Proxy Authentication Required/프록시 인증 필요)
  • 408(Request Timeout/요청 시간 초과) : 요청 중 시간이 초과되었을 때 사용한다.
  • 409(Conflict/충돌)
  • 429(Too Many Requests/너무 많은 요청) : API에 Rate Limit 등 요청 제한을 하는 값이 있을 경우 일정 시간 동안 너무 많은 요청이 제한량을 넘어 버린 경우, Retry-After를 헤더에 담아 다시 요청할 수 있는 정보를 제공해야 한다. 

 

5xx(서버 오류)


클라이언트의 올바른 요청에 서버에서 처리 중에 서버 문제로 인해 오류가 발생해 응답할 수 없다는 의미이다.

  • 500(Internal Server Error/내부 서버 오류) : 서버에 오류가 발생해 작업을 수행할 수 없을때 나타난다. ★★
  • 502(Bad Gateway/불량 게이트웨이)
  • 503(Service Temporarily Unavailable/서비스를 이용할 수 없음) : 서버가 일시적으로 요청을 처리할수 없거나(웹서버는 살아있지만 DB서버가 죽은 경우) 과부하 상태, 또는 점검중이므로 요청을 할 수 없을때 사용한다.
  • 504(Gateway Timeout/게이트웨이 시간 초과)
  • 509(Apache bw/limited extension/대역폭 제한 초과)
  • 520(Unknown Error/알 수 없는 오류)

 

'서버운영 > Linux & NetWork' 카테고리의 다른 글

[Linux] display all possibilities (y or n)  (0) 2019.09.16
[Linux] grep 명령어  (0) 2019.07.12
[Linux] unzip 명령어  (0) 2019.07.10
[Linux] jps 명령어  (0) 2019.07.09
[Linux] Linux is Not Unix  (0) 2019.03.20
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함