당신은 HTTP를 얼마나 아는가? 3편 - 상태 코드(Status Code)

sojukang·2022년 5월 22일
0

Http 상태 코드

상태 코드가 뭔데?🧐

  • 클라이언트가 서버에 요청을 보내면 서버는 그 결과로 상태를 알려준다. 크게 나누면 정상 상태와 에러 상태로 나눌 수 있으며, 정상 상태는 200대 응답으로, 에러 상태는 400 번 대, 500 번 대 응답이 있다. 100 번 대와 300 번 대 응답은 일시적(Transient) 응답으로 사용자에게 완전한 결과의 상태 정보를 알려주지는 않는다.

상태 코드의 종류


200 번 대 응답: 성공(Success)🤸‍♂️

  • 200 번 대 응답은 요청이 정상적으로 처리되었음을 의미한다.

200 OK

네네 처리 되셨고요~ 결과는 문자로 보내드릴게요~ 사랑합니다 고객님

  • 가장 일반적인 성공 응답으로 요청을 서버가 정상 처리하였음을 의미한다.
  • GET 메소드의 경우 요청한 리소스에 해당하는 엔티티가 응답에 포함된다.

204 No Content

네네~ 처리 해드렸어요

  • 서버가 요청을 정상 처리하였지만 클라이언트에게 정보를 보내지는 않음을 의미한다.
  • POSTPUT 으로 리소스를 변경한 뒤 성공 여부만 응답할 경우 사용된다.

206 Partial Content

Server: 네 주문하신 떡볶이 나왔습니다~
Client: 양이 반밖에 없네요?
Server: 네네 고객님 돈을 반만 내셔서 반만 드려요~

  • Range 에 의해 범위가 지정된 요청에 의해 서버가 부분적 응답을 보내는 데 성공했음을 의미한다.
  • 응답에는 Content-Range 로 지정된 범위의 엔티티가 포함된다.

300 번 대 응답: 리다이렉트(Redirection)🧐

  • 300 번 대 응답은 사용자가 원하는 정보를 받지는 못한 상태이며 요청을 정상적으로 처리하기 위해 클라이언트(브라우저) 측에서 새로운 처리를 수행해야 함을 의미한다.

301 Moved Permanently

Client: 유림아... 잘 지내..?
Server: 아 신발 나 유림인지 유린기인지 아니라고 번호 바뀌었다고 몇 번을 말하냐 이 번호 아니라고 010-300-301 여기로 연락해
Client: 오빠가...

  • 요청한 리소스에 새로운 URI 가 부여되었기 때문에 그 리소스를 참조하는 새로운 URI 로 다시 요청해야함을 의미한다.
  • Location 헤더 필드에서 새로운 URI 를 안내해줄 수 있다.

302 Found

Client: 유림아... 잘 지내..?
Server: 아 개발 나 유림이 남자친구인데 넌 뭐이리 눈치가 없냐... 할 말 있으면 내 번호로 걸어서 말해라 내 옆에 있다 010-300-302
Client: 따르릉... 오빠가...

  • 301 Moved Permanently 비슷하지만 302는 영구적으로 새로운 URI 가 부여된 것이 아니라 서버의 이유로 일시적으로 다른 URI 를 참조함을 의미한다.

303 See Other

Client: 유림아... 잘 지내..?
Server: 문자: 오빠 010-300-303 여기로 문자 말고 전화 보내줄래?
Client: 따르릉...

  • 302 Found 와 비슷하지만 반드시 GET 요청으로 리다이렉트 해야함을 의미한다.

304 Not Modified

Client: 유림 딱 하루만 볼 수 있다면 얼마나 좋을까.. 따르릉
Server: 해당 번호가 차단되어 연락할 수 없습니다. 삐 소리가...

  • 클라이언트의 조건부 요청에 관해 리소스는 존재하나 조건이 충족되어 보낼 수 없음을 의미한다.
  • 리스폰스 바디에 어떤 것도 포함하지 않는다.
  • 300 번 대 응답이지만 Redirect 와는 관계가 없다.

307 Temporary Redirect

Client: 유림아... 잘 지내..?
Server: 아 개발 나 유림이 남자친구인데 넌 뭐이리 눈치가 없냐... 할 말 있으면 내 번호로 걸어서 말해라 내 옆에 있다 010-300-302
Client: 유림아... 잘 지내..?

  • 이름에서 보다시피 302 Found 와 유사한 의미를 가진다. 그러나 일반적으로 302는 GET 으로 바꿔서 재요청하지만 307은 요청 바디를 유지한 채로(POST 등) 재요청한다.

🌟 POST -> GET

301, 302 사양은 POSTGET으로 바꿔서 재송신 하는 것을 금지한다.
그러나 대부분의 브라우저에서는 301, 302, 303 응답이 오면 POSTGET 으로 바꿔서 요청의 엔티티 바디를 삭제하고 자동으로 재송신한다.


400 번 대 응답: 클라이언트 에러(Client Error)👎

400 번 대 응답은 클라이언트의 원인으로 에러가 발생하였음을 의미한다.

400 Bad Request

Client: 크리스 한테 오늘 밥 뭐먹냐고 물어봐
Server: 크리스가 아니라 자기 구리스라고 안알려준다는데?

  • 일반적으로 요청이 잘못되었음을 의미
  • 잘못된 파라미터, 헤더 등등 일반적인 경우

401 Unauthorized

Client: 구리스 집 좋다는데 들어가볼까
Server: 들어가려면 비밀번호 있어야지
Client: 아 몰라 그냥 401 칠래
Server: 비밀번호 틀렸잖아;

  • 요청에 HTTP 인증(BASIC 인증, DIGEST 인증) 정보다 필요함을 의미한다.
  • 최초 요청의 경우 인증이 필요함을 응답한다
  • 이후 요청의 경우 인증이 실패하였음을 응답한다.

403 Forbidden

Client: 이야~ 구리스 집 기똥차네 여기 콘푸로스트 좀 먹어도 됨??
Server: 아;; 선넘네

  • 요청된 리소스에 접근이 거부되었다는 의미로, 해당 리소스에 인가되지 않았음을 의미한다.
  • 일반적으로 거부의 이유를 엔티티 바디에 담아 응답한다.

404 Not Found

Client: 유림아.. 따르릉
Server: 지금 거신 번호는 없는 번호입니다.

  • 요청한 리소스가 서버상에 존재하지 않음을 의미한다.
  • 서버측에서 해당 요청을 거부하며 이유를 숨기려할 때도 이용된다.

500 번 대 응답: 서버 에러(Server Error)😱

500 번 대 응답은 서버 원인으로 에러가 발생했음을 의미한다.

500 Internal Server Error

Client: 랄라 거기 폰 좀 집어줄래?
Server: 오키오키 ~ 툭... 바사삭... 아 쏘리 ㅋ

  • 서버에서 요청을 처리하는 도중 에러가 발생했음을 의미한다.
  • 클라이언트에게 공개되지 않기를 원하는 에러가 발생했을 때 일반적으로 500 응답을 보낼 수 있다.

503 Service Unavailable

Cleint: 판다 밥 ㄱ?
Server: (2단계 빠르게 달리는 중) 아 나 5분만

참고

우에노 센, 이병억 역, 그림으로 배우는 HTTP Network Basic, 영진 닷컴

profile
기계공학과 개발어린이

0개의 댓글