상태코드란?
상태코드 MDN
상태코드란, 특정 HTTP 요청이 성공적으로 완료되었는지 알려주는 코드이다
1) 100번대(정보 응답)
서버가 클라이언트에게 정보성 응답(Informational response)을 줄 때 사용되는 상태코드들입니다
100 Continue
- 클라이언트가 서버에게 계속 request를 보내도 괜찮은지 물어봤을 때, 계속 request를 보내도 괜찮다고 알려주는 상태코드이다
- ex) 클라이언트가 용량이 큰 파일을 request의 바디에 담아 업로드하려고 할 때 서버에게 미리 괜찮은지를 물어보고, 서버가 100번 상태코드의 response를 준 이후에 파일 업로드를 시작한다
101 Switching Protocols
- 클라이언트가 프로토콜을 바꾸자는 request를 보냈을 때, 서버가 프로토콜 변경을 허용할 것을 알려주는 상태코드이다
2) 200번대(성공 응답)
클라이언트의 request가 성공 처리되었음을 의미하는 상태코드이다
200 OK
- Request가 성공적으로 처리되었음을 포괄적으로 의미하는 상태 코드이다
201 Created
- Request의 내용대로 리소스가 잘 생성되었다는 뜻이다
- POST 리퀘스트가 성공한 경우에 200번 대신 201번이 올 수도 있다
202 Accepted
- Request의 내용이 일단은 잘 접수되었다는 뜻이다
- 즉, 당장 리퀘스트의 내용이 처리된 것은 아니지만 언젠가 처리할 것이라는 뜻이다
- Request를 어느 정도 모아서 한번에 실행하는 서버인 경우 등에 이런 응답을 줄 수도 있습니다
3) 300번대(리다이렉션 메시지)
클라이언트의 request가 아직 처리되지 않았고, request 처리를 원하면 클라이언트 측의 추가적인 작업이 필요함을 의미하는 상태 코드이다
301 Moved Permanently
- 리소스의 위치가 바뀌었음을 나타낸다
- 보통 이런 상태 코드가 있는 response의 헤드에는 Location이라는 헤더도 일반적으로 함께 포함되어 있다
- 그리고 그 헤더의 값으로 리소스에 접근할 수 있는 새 URL이 담겨있다
- 대부분의 브라우저는 만약 GET request를 보냈는데 이런 상태 코드가 담긴 response를 받게 되면, 헤드에 포함된 Location 헤더의 값을 읽고, 자동으로 그 새 URL에 다시 request를 보내는 동작(Redirection)을 수행한다
302 Found
- 리소스의 위치가 일시적으로 바뀌었음을 나타낸다
- 이 말은 지금 당장은 아니지만 나중에는 현재 요청한 URL이 정상적으로 인식될 것이라는 뜻이다
- 이 상태 코드의 경우에도 보통 그 response의 헤드에 Location 헤더가 있고, 여기에 해당 리소스의 임시 URL 값이 있다
- 이 경우에도 대부분의 브라우저들은 임시 URL로 리다이렉션한다
304 Not Modified
- 브라우저들은 보통 한번 response로 받았던 이미지 같은 리소스들을 그대로 내부에 저장하고 있다
- 그리고 서버는 해당 리소스가 바뀌지 않았다면, response에 그 리소스를 보내지 않고 304번 상태 코드만 헤드에 담아서 보냄으로써 '네트워크 비용'을 절약하고 브라우저가 저장된 리소스를 재활용하도록 한다
- 즉, 이것은 클라이언트에게 응답이 수정되지 않았음을 알려주며, 그러므로 클라이언트는 계속해서 응답의 캐시된 버전을 사용할 수 있다
4) 400번대(클라이언트 에러 응답)
Request를 보내는 클라이언트 쪽에 문제가 있음을 의미하는 상태코드이다
400 Bad Request
- 말그대로 request에 문제가 있음을 나타낸다
- request 내부 내용의 문법에 오류가 존재하는 등의 이유로 인해 발생한다
401 Unauthorized
- 아직 신원이 확인되지 않은(unauthenticated) 사용자로부터 온 request를 처리할 수 없다는 뜻이다
403 Forbidden
- 신원은 확인되었지만, 해당 리소스에 대한 접근 권한이 없음을 나타낸다
404 Not Found
- 해당 URL이 나타내는 리소스를 찾을 수 없다는 뜻이다
405 Method Not Allowed
- 해당 리소스에 대해서 요구한 처리는 허용되지 않는다는 뜻이다
- ex) 서버의 파일을 누구나 조회할 수 있지만 아무나 삭제할 수 없을 때, DELETE request를 보내면 발생한다
413 Payload Too Large
- 현재 request의 바디에 들어있는 데이터의 용량이 지나치게 커서 서버가 거부한다는 뜻이다
429 Too Many Requests
- 일정 시간 동안 클라이언트가 지나치게 많은 request를 보냈다는 뜻이다
5) 500번대(서버 에러 응답)
서버 쪽의 문제로 인해 request를 정상적으로 처리할 수 없음을 의미하는 상태코드이다
500 Internal Server Error
- 현재 알 수 없는 서버 내의 에러로 인해 request를 처리할 수 없다는 뜻이다
503 Service Unavailable
- 현재 서버 점검 중이거나, 트래픽 폭주 등으로 인해 서비스를 제공할 수 없다는 뜻이다