이 험난한 세상에서어어~

섹션 5, HTTP 상태 코드 본문

이론/http

섹션 5, HTTP 상태 코드

토끼띠NJW 2023. 7. 19. 16:03

들어가기에 앞서

이 글은 김영한 님의 '모든 개발자를 위한 HTTP 웹 기본 지식'을 기반으로 하고 있습니다.

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연소 기술

www.inflearn.com

섹션 5

HTTP 상태코드

HTTP 상태 코드는 100대부터 500대까지 나름 다양하다. 굉장히 많아 이를 전부 설명하기에는 무리가 있어 더 자세한 내용은 링크로 대체한다. 위에서 밝혔듯이 해당 글은 김영한님의 강의를 전반적으로 정리하는 걸 목적으로 하기에 강의에 나온 내용만 작성하도록 하겠다.

https://developer.mozilla.org/ko/docs/Web/HTTP/Status

 

HTTP 상태 코드 - HTTP | MDN

HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 그리고

developer.mozilla.org

 

일단 1XX.

1XX은 현재 요청이 수신되어 진행중이라는 의미이다.

 

2XX.

보통 성공을 의미할 때 쓰이는 상태코드이다.

201은 요청이 성공적이고 새로운 리소스가 생성되었다는 의미로 보내는 상태코드이다. 새로운 리소스 생성에서 알 수 있듯이 POST나 PUT 메소드의 응답을 반환할 때 주로 쓰인다.

204는 NO-CONTENT로 요청이 성공적이었으며 굳이 반환할 것이 없을 때 사용이 된다.

 

3XX.

리다이렉션이 필요할 때 쓰이는 상태코드이다.

리다이렉션이란 간단하게 말해서 다시 지시하는 것으로 모종의 이유로 서버가 클라이언트에게 다른 방향(direction)으로 제시할 때 사용이 된다.

 

예를 들어서 1234라는 주소가 1235로 변경됐다고 가정했을 때, 클라이언트가 과거의 주소인 1234로 접근하려 한다면 서버가 1235 주소를 클라이언트에게 줘서 올바른 주소로 접속하게 도와주는 것이다.

 

참고로 말하자면 리다이렉션에는 영구 리다이렉션, 일시 리다이렉션, 특수 리다이렉션이 있다. 내가 예로 든 경우는 영구 리다이렉션에 해당한다. 일시 리다이렉션으로는 주문 완료 후 주문 완료 창이 나오는 걸 예로 들 수 있다. 만일 주문 완료를 했는데, 리다이렉션이 안 되고 계속 주문 창이 떠있다면 주문이 중복해서 들어갈 수 있기 때문이다. 그리고 특수 리다이렉션은 캐시가 만료된 경우 계속해서 해당 캐시를 사용할지 아니면 새 값을 받아올지 결정할 때 사용이 된다.

 

301과 308은 영구 리다이렉션이다.

301의 경우에는 POST로 전송하면 돌아오는 값이 GET으로 반환되어 리다이렉션된다. 이때 클라이언트가 보낸 값이 전부 사라지기 때문에 Form에 넣은 값들을 다시 넣어야한다는 단점이 있다. 308은 이와 같은 단점을 해결한 경우인데, 잘 사용되지 않는다. 그 이유는 어차피 주소가 바뀌면 거기에 넣는 값들도 대부분 바뀌기 때문이다.

 

302, 307, 303은 일시적인 리다이렉션이다.

302의 경우는 POST로 보내면 GET이 돌아온다는 점에서 301과 유사하다. 그러나 무조건 변경되는 건 아니고 일시적으로 변경되었음을 의미한다.  307은 메서드 변경이 되지 않고 유지된다는 의미이며 303은 302와 유사하지만 무조건 POST가 GET으로 변경된다는 점에서 차이 점이 있다.

 

304는 특수 리다이렉션으로 캐시를 관리할 때 사용된다.

 

4XX.

400번대 상태 코드는 클라이언트 오류로 오류의 원인이 클라이언트에 있다는 의미이다.

400은 Bad Request로 클라이언트가 잘못된 문법을 보내서 서버가 응답을 할 수 없다는 표시이다. 401 Unauthorized는 아직 권한을 부여 받지 않은 사용자라 해당 리소스에 접근이 불가능하다는 것이다. 참고로 Authentication이란 단어도 존재하는데 이는 인증이란 의미로 로그인과 같은 보안 기능을 생각하면 된다.

403은 Forbidden으로 서버가 클라이언트의 요청을 거부하는 것이다. 이때는 문법이 잘못된 게 아니라 접근 권한이 불충분하다는 등 서버에서 요청을 이해했지만, 거절한 것이다.

404는 Not Found로 클라이언트가 요청한 리소스가 서버에 없음을 의미한다. 다만, 서버 쪽에서 숨기고 싶은 데이터일 때 해당 응답 메시지를 보내기도 한다.


5XX.

이건 서버 오류이다. 서버 오류라서 재접속하면 연결될 가능성이 있다.

'이론 > http' 카테고리의 다른 글

섹션 4, HTTP 메서드  (0) 2023.07.08
섹션 2, 3  (0) 2023.07.07
1. 네트워크  (0) 2023.07.06