1. 상태코드란?
클라이언트가 서버를 향해 요청을 보낼 때 서버에서 그 결과가 어떻게 되었는지 알려주는 것이 상태 코드의 역할이다. 서버가 요청을 정상적으로 처리했는지? 아니면 요청결과가 에러였는지 알 수 있다.
클라이언트 요청 -----------------> 상태코드 2XX : 정상처리
클라이언트 요청 -----------------> 상태코드 3XX : 리다이렉트
클라이언트 요청 -----------------> 상태코드 4XX, 5XX : 에러
2. 2XX 성공(Success)
2XX 응답은 요청이 정상적으로 처리되었음을 알려준다.
2.1 200 OK
클라이언트가 보낸 요청을 서버가 정상적으로 처리하였음을 알려준다.
2.2 204 No Content
서버가 요청을 받아서 처리하는데 성공했지만, 서버에서 보내줄 데이터가 없을 경우를 의미한다. 서버에 정보를 보내는 것만 수행하고, 클라이언트에 대해 새로운 정보를 보낼 필요가 없을 경우 사용한다.
2.3 206 Partial Content
이 응답은 범위가 지정된 요청에 의해 서버가 부분적으로 GET요청의 일부만 성공적으로 처리된 것을 알려준다.
3. 3xx 리다이렉트(Redirection)
3XX 응답은 요청을 마치기 위해 추가 동작을 취해야함을 의미한다.
3.1 301 Moved Permanently
요청된 페이지가 새로운 URI로 부여되어 있기 때문에 이후로는 그 페이지를 참조하는 URI를 쭉 사용해야한다는 것을 나타낸다. 즉 쉽게 말해 요청한 페이지는 새로운 주소로 옮겨 갔다는 것을 말해주는 것을 뜻한다.
3.2 302 Found
요청된 페이지가 새로운 URI가 할당되어 있기 때문에 그 URI를 참조해주길 바란다는 의미를 가지고 있다. 301과 비슷하지만 302의 경우는 영구적인 이동이 아닌 일시적이다.
3.3 303 See Other
요청에 대한 자원은 다른 URI에 있기 때문에 GET메서드를 사용해서 얻어야한다는 것을 나타낸다. 302와 같은 기능이지만 리다이렉트 장소를 GET메서드로 얻어야 한다는 점에서 302와 다르다.
3.4 304 Not Modified
클라이언트가 조건부 요청을 했을 때 자원에 대한 접근은 허락했지만, 조건이 충족되지 않음을 나타낸다. 300번대에 분류되어있지만 리다이렉트와 관계가 없다. 다시말하자면 변경된 것이 없을 때를 의미한다.
4. 4xx 클라이언트 에러(Client Error)
4XX 응답은 클라이언트의 원인으로 에러가 발생했음을 알려준다.
4.1 400 Bad Request
이 응답은 요청 구문이 잘못되었음을 나타낸다. 이 에러가 발생한 경우, 요청내용을 다시 검토할 필요가 있다는 것을 의미한다.
4.2 401 Unauthorized
이 응답은 요청에 HTTP인증 정보가 필요하다는 것을 의미한다. 이미 한번 요청이 이루어진 경우 유저인증에 실패했음을 나타낸다. 상태 코드 이름이 권한 없음(Unauthorized)으로 되어 있지만 실제 뜻은 인증 안됨(Unauthenticated)에 더 가깝다.
4.3 403 Forbidden
이 응답은 요청된 자원의 접근이 거부되었을 경우이다. 서버 측에서 거부의 이유를 명확히 하는 경우에는 엔티티 바디에 기재해서 유저 측에 표시를 한다. 403이 발생한 원인으로는 파일 시스템의 허가가 부여되지 않은 경우와 접근 권한에 문자가 있는 것을 예로 들수 있다.
4.4 404 Not Found
요청된 자원이 서버에 없을 경우이다. 즉 서버에 존재하지 않는 페이지에 대한 요청이 있을 경우 이 응답코드를 제공한다.
5. 5xx 서버 에러(Server Error)
5XX 응답은 서버의 원인으로 에러가 발생하고 있음을 나타낸다.
5.1 500 Internal Server Error
이 응답은 서버에서 요청을 처리하는 도중에 에러가 발생하였을 경우를 뜻하는데 웹애플리케이션에 에러가 발생한 경우이거나 일시적인 경우도 있을 수 있다.
5.2 503 Service Unavailable
일시적으로 서버가 과부하 상태이거나 점검중이기 때문에 현재 요청을 처리할 수 없음을 나타낸다. 일반적으로 일시적인 상태를 의미한다.