ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Network] HTTP 상태 코드
    Computer Science/Network 2022. 7. 6. 11:17
    728x90

    출처 : https://www.clien.net/service/board/lecture/16669378

    상태코드의 중요성

    expo cli 와 django를 사용한 앱 개발을 진행하던 중 front에서 back으로 rest api를 요청했을 때 요청이 받아지지 않는 원인이 발생했다. djanog 개발 서버를 사용해서 api 테스팅을 했을 때는 잘 동작하지만 front요청에는 응답하지 않았다. front 쪽에서는 계속 [ Network Error ]만 발생하는 상태!

    초반에는 front 쪽의 문제인 줄 알고 요청 코드도 변경해보고 이것저것 해보았지만 해결되지 않았고 back쪽의 문제라고 생각했다. django settings.py에 api관련 설정을 추가해서 해결해보려고 했지만 실패했다.

    그러던 와중에 눈에 들어온 [ HTTP. 204 NO CONTENT ] 이런 상태 코드를 적은 적이 없는 것 같은데 몇 개의 api의 response에 뿌려져있었다. 이 상태코드를 200으로 변경하니 잘돌아가던,,,, 상태코드의 중요성을 깨달아서 적는 포스팅이다.

     

    HTTP Status Code

    클라이언트 요청에 대한 서버의 응답

    5개의 클래스로 분류되는데 첫 번째 숫자는 응답 클래스를 정의한다. 

    • 1xx : 정보 응답 - 요청을 받고 프로세스를 계속한다.
    • 2xx : 성공 - 요청이 성공적으로 수신, 이해 및 수락됐다.
    • 3xx : 리디렉션 - 요청을 완료하기 위해 추가 조치가 필요하다.
    • 4xx : 클라이언트 오류 - 요청에 잘못된 구문이 포함되어 있거나 수행할 수 없다.
    • 5xx : 서버 오류 - 서버가 분명히 유효한 요청을 수행하지 못했다. 

     

    1xx : Informational

    요청이 수신되고 이해되었다는 뜻으로 요청 처리가 되는 동안 발행된다.

    100 Continue

    진행 중임을 의미하는 응답코드다. 현재까지의 진행 상태에 문제가 없고 클라이언트가 계속해서 요청을 하거나 이미 요청을 완료한 경우에는 무시해도 되는 것을 알려준다.

    101 Switching Protocol

    클라이언트가 서버에 프로토콜을 전환하도록 요청하여 서버가 프로토콜 변경에 동의했음을 알린다.

    102 Processing(WebDAV)

    WebDAV 요청에는 요청을 완료하는데 오랜 시간이 필요한 파일 작업과 관련된 많은 하위 요청이 포함될 수 있다. 따라서 서버가 요청을 수신했으며 처리하고 있지만 아직 제대로된 응답을 줄 수 없음을 알려준다.

     

    2xx : Success

    200 OK

    성공적인 HTTP 요청에 대한 응답이다. GET 요청에는 요청된 엔티티가 포함되며 POST요청에는 작업 결과를 설명하거나 포함하는 엔티티가 포함된다.

    201 Created

    요청이 성공적이었으며 그 결과로 새로운 리소스가 생성되었다는 응답으로 GET요청, POST요청 이후에 따라온다.

    202 Accepted

    요청을 수신했지만 요청을 처리가 완료되지 않았다는 응답으로 서버가 요청을 접수했지만 아직 처리하지 않았다는 뜻이다.

    203 Non-Authoritative Infomation(신뢰할 수 없는 정보)

    돌려받은 메타 정보 세트가 오리진 서버의 것과 일치하지 않다는 것으로 200 OK 응답이 우선된다.

    204 No Content

    서버가 요청을 성공적으로 처리했지만 요청에 대해서 보내줄 수 있는 콘텐츠가 없다는 응답이다.

    ...

     

    3xx : Redirection

    300 Multiple Choice

    요청에 대해서 하나 이상의 응답이 가능하다.

    301 Moved Permanatly

    요청한 리소스의 URI가 변경되었음을 의미한다.

    302 Found

    요청한 리소스의 URI가 일시적으로 변경되었음을 의미한다.

    303 See Other

    클라이언트가 요청한 리소스를 다른 URI에서 GET요청을 통해 얻어야 할 때, 서버가 클라이언트로 직접 보내는 응답이다.

    304 Not Modified

    캐시를 목적으로 사용된다. 클라이언트에게 아직 응답이 수정되지 않았음을 알려주며 클라이언트는 계속해서 응답의 캐시된 버전을 사용할 수 있다.

    ...

     

    4xx : Client Error

    400 Bad Request

    클라이언트의 잘못된 요청 오류로 인해 요청을 처리할 수 없다는 응답이다.

    401 Unauthorized

    비인증(unauthenticated)의 의미로 클라이언트가 요청한 응답을 받기 위해서는 반드시 스스로 인증을 해야한다는 응답이다.

    402 Payment Required

    나중에 사용할 것을 대비해 예약된 응답코드로 디지털 결제 시스템에 사용하기 위해 만들어졌지만 현재 사용되진 않는다.

     

    403 Forbidden

    클라이언트가 콘텐츠에 접근할 권리를 가지고 있지 않아 요청을 거절하기 위한 응답이다. 401과 다른 점은 클라이언트가 누군인지 알고 있다는 것이다.

    404 Not Found

    서버는 요청받은 리소스를 찾을 수 없다. 즉 알려지지않은 URL을 의미한다. 

    405 Method Not Allowd

    요청한 메소드는 서버에서 알고 있지만, 제거되고 사용할 수 없다는 응답코드이다. 

    406 Not Acceptable

    서버가 사용자 에이전트에서 정해준 규격에 따른 어떠한 콘텐츠도 찾지 않았을 때 웹서버가 보낸다.

    407 Proxy Authentication Required

    401과 비슷하지만 프록시에 의해 완료된 인증이 필요하다는 응답이다.

    408 Request Timeout 

    요청을 한 지 시간이 오래된 연결에 일부 서버가 전송하며 클라이언트로 부터 어떤 요청도 없었다고 해도 응답하기도 한다. 

    409 Conflict

    요청이 현재 서버의 상태와 충돌될 때 보낸다.

    ...

     

    5xx : Server Error

    500 Internal Server Error

    웹 사이트 서버에 문제가 있음을 의미하지만 서버는 정확한 문제에 대해 구체적으로 설명못한다.

    501 Not Implemented

    서버가 요청을 이행하는 데 필요한 기능을 지원하지 않는다.

    502 Bad Gateway

    서버가 게이트웨이로부터 잘못된 응답을 수신했음을 의미한다. 인터넷상의 서버가 다른 서버로부터 유효하지 않은 응답을 받은 경우 발생한다.

    503 Service Unavailable

    서버가 요청을 처리할 준비가 되지 않았다는 응답이다.

    504 Gateway Timeout

    웹페이지를 로드하거나 브라우저에서 다른 요청을 채우려는 동안 한 서버거 액세스하고 있는 다른 서버에서 적시에 응답을 받지 못했음을 의미한다.

     

    ...

     


    참고

    : https://www.whatap.io/ko/blog/40/

    : https://en.wikipedia.org/wiki/List_of_HTTP_status_codes 

    728x90

    댓글

Designed by Tistory.