
Http 상태 코드
-> 특정 HTTP 요청이 정상적으로 완료되었는지 여부를 나타내는 3자리 숫자 코드이다.
100번 부터 시작해서 500번대까지 크게 총 5개의 타입으로 나눌 수 있다.
상태 코드는 항상 상태메시지와 함께 명시된다.
- 100 -
정보 응답 / 요청이 진행 중일때 사용
- 200 -
성공 응답/ 요청이 성공적으로 처리됨.
- 300 -
리다이렉션 / 요청한 리소스가 다른 곳으로 이동
- 400 -
클라이언트 에러 / 잘못된 요청
ㄴ JSP 파일이나 controller 내부 코드 에러 다수
- 500 -
서버 에러 / 서버에서 처리 중 오류 발생
ㄴ 서버 자체를 refresh 해보거나 clean 하기 혹은 해당 프로젝트를 서버에서 내린 후 다시 올리는 방법도 시도해보기.
1 XX
100 Continue
클라이언트가 서버에 요청을 보냈고, 서버는 이 요청이 아직 진행중임을 알리고 추가로 데이터를 전송할 준비가 되어있음을 나타내는 코드.
이 경우에 클라이언트는 계속해서 요청을 할 수 있다.
101 Switching Protocols
서버가 클라이언트 요청에 따라서 프로토콜을 변경하고 있다는 의미이다.
만약 HTTP 프로토콜에서 WebSocket 으로 변경될때 이 상태코드가 뜰 것이다.
2 XX
200 OK
가장 흔한 상태코드.
클라이언트의 요청이 성공적으로 처리 되었음을 나타낸다. (요청 ㅇ)
클라이언트가 요청한 리소스가 성공적으로 반환됐거나, 요청에 대한 처리가 성공적으로 완료됨을 나타내는 코드이다.
201 Created
클라이언트의 요청이 성공적으로 처리되었고, 그 요청에 따른 새로운 리소스가 생성되었음을 나타낸다.
(요청 ㅇ, 리소스 생성 ㅇ )
예를 들면 POST 요청을 통해서 새로운 데이터를 생성할때 나타나는 코드이기도 하다.
3 XX
300 Moved Permanently
요청한 리소스가 다른 위치로 영구적으로 이동됐음을 나타내는 코드이다.
영구적으로 이동되었기 때문에, 클라이언트가 앞으로는 변경된 URL로 요청을 보내야 한다.
304 Not Modified
클라이언트가 요청한 리소스가 이전에 받은 것과 동일하며, 변경되지 않고 그대로인 상태임을 나타내는 코드이다.
클라이언트는 해당 리소스를 그대로 계속 사용할 수 있다. (변경 안됐고, 케시되있음으로)
307 Temporary Redirect
요청한 리소스가 임시적으로 다른URL로 리다이렉트 됨을 의미하는 코드이다.
클라이언트는 동일한 HTTP 메소드를 사용해서 새로운 URL로 요청을 보내야 한다.
308 Permanent Redirect
요청한 리소스가 영구적으로 새로운 URL 로 이동되었음을 의미하는 코드이다.
클라이언트는 앞으로 이 변경된 새로운 URL을 사용해야한다.
4 XX
400 Bad Request
클라이언트가 서버에 잘못된 요청을 보냈음을 나타내는 코드.
코드 내 문제, 요청 문법이나 코드 내에 필요한 파라미터가 누락된 경우 발생하기 쉽다.
401 Unauthorized
클라이언트가 요청을 하려면 인증이 필요한데, 인증 정보가 없거나 잘못된 경우의 코드.
클라이언트가 올바른 자격증명(cerificate authorization)을 해야하는 상황이다.
인증이 필요한데, 로그인을 하지 않고 해당 페이지에 접근하려고 할때 발생
403 Forbidden
클라이언트가 서버에 적절한 권한이 없어서 요청이 금지된 경우의 코드.
클라이언트가 인증된 것과는 별개이다.
이미 인증한 클라이언트여도 '해당 리소스'에 대한 접근 권한이 없음을 의미한다.
예를 들어, 관리자 권한이 없는 사용자가 관리자 페이지에 접근하려 할때 발생할 수 있다.
404 Not Found
클라이언트가 요청한 리소스를 찾을 수 없음을 나타내는 코드.
요청한 URL이 잘못 되었거나, 서버에서 해당 리소스가 삭제된 경우에 발생한다.
405 Method not Allowed
클라이언트가 요청한 HTTP 메서드가 서버에서 지원되지 않음을 의미하는 코드.
예를 들어, GET요청만을 허용하는 리소스에 대해서 POST 요청을 보내면 발생 할 수 있다.
5 XX
500 Internal Server Error
서버에서 클라이언트의 요청을 처리하는 중, 예기치 못한 문제가 발생함을 나타내는 코드.
서버의 내부 문제로 인해 요청을 완료할 수 없을때 뜬다.
-> tomcat 등 확인 필요
502 Bad Gateway
서버가 게이트웨이로서 다른 서버로부터 잘못된 응답을 받았을때 뜨는 코드.
보통은 프록시 서버나 게이트웨이 서버가 응답을 처리하는 중에 발생하는 오류이다.
* 프록시 서버 :
프록시 서버는 클라이언트에서 서버로 접속을 할 때 직접적으로 접속하지 않고 중간에 대신 전달해주는 서버를 의미한다.
-> Apache HTTP Server , NginX, HaProxy 등이 있다.
* 게이트웨이 서버:
컴퓨터 네트워크에서 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하게 하는 서버이다.
즉, 다른 네트워크간의 통로 역할을 하는 것이다.
* 게이트웨이 프록시 서버는 컨텐트 캐시, 보안, 필터링 등의 역할을 하는 중개자라면
게이트웨이는 서로 다른 네트워크 통신에서 서로 다른 프로토콜을 호환가능하게 하는 특별한 서버라고 볼 수 있다.

503 Service Unavailabe
서버가 일시적으로 과부하 되었거나 유지 보수 중이어서 요청을 처리할 수 없을때 뜨는 코드.
서버가 잠시동안 사용될 수 없음을 나타낸다.(서버 뻗음..)
504 Gateway Timeout
서버가 게이트웨이 역할을 하는 동안, 요청한 서버로부터 응답을 제때 받지 못했을때 뜨는 코드.
네트워크 문제 또는 요청한 서버의 과부하로 인해 발생할 수 있다.
ETC
418 I'm a teapot
"서버는 커피를 찻 주전자에 끓이는 것을 거절합니다."
농담으로 만들어진 상태코드
클라이언트가 티포트에 커피를 만들라는 요청을 했을대 티포트는 커피를 만들 수 없다는 응답을 의미한다..
(만우절 RFC에서 유래한 코드이다.)

*내용 참고_ '터틀넥 연구소'님