최근에 일을 하던 중... 오류가 발생해 개발자 도구에 들어가다 보면
HTTP 상태코드를 반환하며 오류가 발생한다는 것이 보인다..
그래서 앞으로도 오류 발생 메세지를 자주 보게 될텐데, 한번 익혀두면 좋을거 같아 정리해본다..
웹사이트에 접속하면, 화면을 보여 주기 위해 많은 리소스를 다운로드 한다.
리소스란? URL 을 검색해서 받아온 결과물이자 텍스트, HTML,이미지 등 그 외 서버로부터 전달받은 데이터들을 말한다.
여기서 잠깐 리소스는 어떻게 가져오는 걸까?
웹브라우저에서 서버에게 리소스를 요청하는 과정을 간단하게 설명을 해보자면,
구글에 (Naver, Daum) 을 검색했을때, 검색한 결과 데이터를 가져오기 위해,
웹브라우저에서 서버 주소를 찾아 HTTP 요청 메세지를 패킷에 담아 구글 서버에 전달한다.
구글 서버에서는 전달받은 메시지를 분석해서 HTTP 응답 메세지를 패킷에 담아 웹 브라우저에 전달한다.
웹 브라우저에선 전달받은 데이터로 화면을 보여주게 된다.
여기에서 응답메시지에 상태코드를 반환하게 되는데,
크게 1XX 부터 5XX 로 종류가 나뉘어 있다.
HTTP 상태코드 : 클라이언트(현재 내 컴퓨터) 가 보낸 요청의 처리 상태를 응답에서 알려주는 기능이다!
1xx (정보) : 요청을 받았으며 프로세스를 계속 처리중
2xx (성공) : 요청을 성공적으로 처리
3xx (리다이렉션) : 요청 완료를 위해 웹 브라우저에서 추가 작업 조치가 필요
4xx (클라이언트 오류) : 요청의 문법이 잘못되거나 요청을 처리할 수 없음
5xx (서버 오류) : 서버가 정상 요청을 처리하지 못함
요청을 받았으며 프로세스를 계속 처리중
(거의 사용하지 않음) 설명 생략
· 100 Countinue
· 101 Switching Protocol
요청을 성공적으로 처리
· 200 OK
요청 성공
· 201 Created
요청 성공해서 새로운 리소스가 생성됨, 주로 Post(Create) 요청, 일부 Put(update) 요청 이후에 따라오게된다.
· 202 Accepted
요청을 수신했지만 아직 처리가 완료되지 않음
ex) 요청 접수 후, 서버에서 1시간 뒤에 배치 프로세스가 요청을 처리함.
· 204 No Content
요청을 성공했지만 ,응답 페이로드 본문에 보낼 데이터가 없음.
요청 완료를 위해 웹 브라우저에서 추가 작업 조치가 필요함 (리다이렉션)
· 301 Moved Permanetly
· 302 Found
· 303 See Other
· 304 Not Modified
· 307 TemPorary Redirect
· 308 Permanent Redirect
리다이렉션?
웹 브라우저는 3XX 응답의 결과에 Location 헤더가 있으면, Location 위치로 정상 이동
예를 들면 URL 이 더이상 쓰이지 않고 ,
URL 이 바뀐상태에서 클라이언트가 전 URL 을 입력 했을 때,
Location-Header 값이 이동한 URL 이 있다면 3XX 응답을 한후 이동한 URL 로 자동 이동이된다.
클라이언트 오류, 요청의 문법이 잘못되었거나 요청을 처리할 수 없음
· 400 Bad Request
잘못된 문법이나 메시지를 요청하여 서버가 이해할 수 없음
· 401 Unauthoriezd
클라이언트가 해당 리소스에 대한 인증이 필요함(로그인)
· 403 Forbidden
서버가 요청을 이해했지만 승인을 거부함.
인증은 되었지만(로그인) 접근 권한이 불충한 경우(인가).
· 404 Not Found
요청 리소스를 찾을 수 없음.
서버 오류
· 500 Internal Server Error
서버 내부 문제로 오류 발생
· 502 Bad Gateway
서버간의 유요하지 않은 응답을 받은 경우
· 503 Service Unavailable
서버가 일시적으로 요청을 처리할 준비가 되지 않음.
유지보수를 위한 작동이 중단되거나 과부하가 걸린 서버.
이중에서 503은 일시적인 오류이므로 다시 서버가 요청을 처리 할 수 있다.