HTTP-Status-Code

GI JUNG·2022년 10월 27일
4

nodejs

목록 보기
3/6

저번주에 카카오톡이 sk데이터센터에서 화재가 나는 바람에 먹통이 되었었다. 카카오톡 로그인을 하려고 하는데500이란 상태코드를 보고 웹 개발을 하고 있는데 상태코드에 대해서 겨우 200, 404밖에 모르고 있어 자아성찰겸 자주 쓰이는 상태코드를 알아보고자 정리한다.

👉🏻 카톡 로그인 시 오류 코드

🍀 HTTP Status Code란?

브라우저 요청에 대한 서버의 응답이다. 즉, HTTP Status Code는 서버로부터 브라우저로 보내는 3자리 숫자(3digits)로 이루어져 있다. 따라서, 상태 코드는 에러나 상태 등에 대한 정의된 코드와 의미를 가진다.

An HTTP status code is a server response to a browser’s request.

🍀 HTTP Status Code Class

  • 100 ~ 199(informational responses; 조건부 응답): 서버가 요청을 받았으니 클라이언트는 작업을 계속 진행하라는 정보에 관한 상태코드이다.

  • 200 ~ 299(Successful responses; 성공): 클라이언트가 요청한 동작을 수신, 이해, 승낙했으며 성공적으로 처리했음을 가리키는 정보가 담긴 상태코드이다.

  • 300 ~ 399(Redirection message; 리다이렉션): 클라이언트는 요청을 마치기 위해 추가적인 동작을 해야한다.

  • 400 ~ 499(Client Error; 클라이언트 에러): 클라이언트에 오류가 있음을 나타내는 상태코드이다.

  • 500~599(Server Error; 서버 에러): 서버에 오류가 있음을 나타내는 상태코드이다.

🍀 Common HTTP Status Code

200(성공)  ▶︎    성공적인 HTTP 요청에 대한 표준 "OK" 상태 코드로 응답은 요청에 따라 다르다. 예를 들어 GET request에 대해서는 응답이 메시지 본문에 포함되며, PUT / POST request에 대해서는 작업 결과가 포함된 리소스가 포함된다.

201(작성됨)  ▶︎    요청이 성공했으며, 결과적으로 새 리소스가 생성되었음을 나타내는 상태 코드이다. 일반적으로 POST/PUT 요청 후에 전송된다.

204(콘텐츠 없음)  ▶︎    서버가 요청을 이행했지만 정보를 반환할 필요가 없음(삭제 요청, form을 통한 정보전달, 새 페이지가 로드되지 않아야되는 상황)을 나타낸다.

301(영구 이동)  ▶︎    요청에 대해 다른 URL로 영구적으로 리디렉션함을 나타낸다.

302(임시 이동)  ▶︎    현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 client는 향후 요청 시 원래 위치를 계속 사용해야 함을 나타낸다.

304(수정되지 않음)  ▶︎    브라우저 캐싱에 사용되는 상태 코드로서 응답이 수정되지 않은 경우 클라이언트는 동일한 응답 또는 캐시 버전을 계속 사용할 수 있다. 예를 들면, 브라우저는 특정 시간 이후에 리소스가 수정되었는지 요청할 수 있는데 수정되지 않은 경우는 304 수정된 경우는 리소스와 함께 200이 전송된다.

400(잘못된 요청)  ▶︎    클라이언트 오류로 인해 서버가 처리할 수 없는 상태로서 데이터 누락, 도메인 유효성 검사 및 잘못된 형식 지정과 같은 요청에 대해서 나타나는 상태코드이다.

401(권한 없음)  ▶︎    client가 요청에 대한 권한이 없음을 나타내는 상태코드이다. 예를 들면 로그인 하는 페이지의 경우를 들 수 있다.

402(결제 필요)  ▶︎    이 요청은 결제가 필요함을 나타낸다.

403(금지됨)  ▶︎    403은 401과 매우 유사하지만, 403은 resource에 대한 권한이 없음을 의미하며 인증이 실패했음을 나타낸다. 즉, 401은 인증 실패, 403은 인가 실패라고 생각하면 된다.

404(찾을 수 없음)  ▶︎    요청한 페이지를 찾을 수 없음을 나타내며 서버에 존재하지 않는 페이지에 대한 요청을 예로 들 수 있다.

405(허용되지 않은 메서드)  ▶︎    서버에 요청한 method가 유효하지 않음을 나타낸다.

409(충돌)  ▶︎    서버가 요청을 처리할 때 충돌이 발생함을 나타낸다. 동시에 업데이트하는 상황을 예로 들 수 있다.

410(사라짐)  ▶︎    클라이언트의 요청이 영구적으로 삭제되었음을 나타내는 상태코드이다. 404와 다른 점은 이전에는 있었지만 현재는 존재하지 않을 때 410을 쓰는데, 404로 대신 사용하는 경우도 있다. 또한 리소스가 영구적으로 이동했을 때는 301을 통하여 리소스의 위치를 새롭게 지정해야 한다.

500(내부 서버 오류)  ▶︎    서버에 오류가 발생하여 처리할 수 없는 상태이다. 상태코드 500과 같은 경우 서버의 동작에서 정확한 에러를 알 수 없을 때를 의미한다. 즉 예외적인 또는 예측하지 못한 에러를 내뿜으며 아래와 같이 다양한 원인이 있을 수 있다.

  • 서버 통신의 Timeout 시간 지연 오류
  • 서버 트래픽 과부하
  • 서버 언어의 구문 에러(스크립트 문법 오류)

위와 같이 원인 파악에 있어 정확한 정보가 없기 때문에 서버의 로그 정보를 확인하여 해결해야 한다.

☁︎ 마치며

흔하게 보이는 상태코드를 여기저기서 줍줍하고 정리해봤다. 정리하면서 많은 상태코드를 배울 수 있었지만 이런 상태코드를 다 외우는데 시간을 쓰는 것 보단 계속 자연스럽게 접하면서 또는 상태코드를 볼 때마다 자연스럽게 익히는 것이 좋을 것 같다.

📒 참고

wikipedia HTTP status code
mdn http status code
http status code
http status code1
common http status code ko

profile
step by step

0개의 댓글