-
[HTTP] Status Code를 알아보자코딩은 주댕이로/인터넷 2017. 4. 15. 04:55
HTTP Response에는 Status code가 존재한다.
클라이언트의 Request가 어떻게 처리 되었는지를 간단히 알려주는 코드입니다.
"200, OK"처럼 숫자와 설명으로 이루어지는데 이에 대해서 간단히 알아보도록 할게요.
200처럼 Status code는 3자리 숫자로 이루어져있고, 크게 5가지 종류가 정의되어 있습니다.
RFC스펙을 따른다면 커스텀한 Status code를 만들 수도 있습니다만, 이건 제 관심밖입니다.
클래스
설명
1xx
Informational
리퀘스트를 받아들여 처리중
2xx
Success
리퀘스트를 정상적으로 처리했음
3xx
Redirection
리퀘스트를 완료하기 위해서 추가 동작이 필요
4xx
Client error
클라이언트에서 발생한 에러로 리퀘스트 처리 불가
5xx
Server error
서버에서 발생한 에러로 리퀘스트 처리 불가
200 OK
404 Not Found
이 두가지는 컴퓨터와 관련이 없는 일반 사용자들도 굉장히 익숙할만한 단어인데요.
그럼 이 두가지를 포함한 주로 사용되는 Status 코드들을 간략히 알아보도록 하겠습니다.
200 OK
말그대로 리퀘스트를 아주 정상적으로 깔~끔하게 처리하였음을 의미합니다.
200 OK로 Reponse가 내려갈때에는 리퀘스트된 리소스와 함께 내려가게 됩니다.
204 No Content
리퀘스틀 정상적으로 수행했지만 돌려줄 리소스가 없는 경우입니다.
클라이언트에서 서버에 작업을 요청하는 것만으로 족할 때 사용됩니다.
참고로, 브라우저에서 204 No Content의 Response를 받으면 아무일도 일어나지 않습니다.
301 Moved Permanently
리퀘스트된 리소스의 URI가 바뀌었으니 다음부터 바뀐 URI로 요청해달라는 의미입니다.
주소창에 잘못된 URI를 입력했을 때 주로 발생합니다.
예를 들어, 아래 URI와 같이 디렉터리 path에서 /를 깜빡한체 요청하게 되면 301 Moved Permanently가 발생하게 됩니다.
http://example.com/sample
302 Found
리퀘스트된 리소스에 새로운 URI가 할당되어 있으니 해당 URI를 참조해달라는 의미입니다.
301 Moved Permanently와 유사하지만 302는 일시적인 경우에 해당합니다.
303 See Other
리퀘스트된 리소스가 다른 URI에 있기 때문에, GET 메소드를 사용해서 얻어야 한다는 것을 나타냅니다.
302 Found와 유사하지만 GET메소드로 얻어야 한다고 명확하게 되어있는점이 다릅니다.
* 실제로 브라우저에서는 301, 302, 303 모두 GET메소드로 리소스를 얻도록 구현되어 있다고하네요.
400 Bad Request
리퀘스트 구문이 잘못되었음을 나타냅니다.
이 에러가 발생한 경우, 리퀘스트 내용을 재검토하고 송신하여야 합니다.
브라우저에서는 400 Bad Request를 200 OK와 같이 취급하고 있습니다.
401 Unauthorized
인증이 필요한 리소스를 요청하면서 인증 정보가 없는 경우 발생합니다.
401 Unauthorized를 처음 받게되면 브라우저에서는 인증정보를 입력하는 창이 뜹니다.
하지만 인증을 시도한 뒤 401 Unauthorized를 또 받게되면, Authorization Failed이라는 메시지를 받게 됩니다.
403 Forbidden
리퀘스트된 리소스에 액세스가 거부되었다는 의미를 나타냅니다. 특정 환경 또는 IP에서 거부되는 경우가 있을 수 있습니다.
403 Forbidden을 내려줄 땐, 서버에서는 엔티티 바디에 액세스 거부 이유를 첨부하여 알려줄 수 있습니다.
404 Not Found
리퀘스트된 리소스가 서버에 없음을 알려줍니다. 액세스를 거부하고 싶지만 이유를 밝히고 싶지 않을 때 사용하기도 합니다.
500 Internal Server Error
서버에서 리퀘스트를 처리하던 도중 에러가 발생했음을 의미합니다.
웹 애플리케이션의 에러일 수도 있고, 일시적 에러일 수도 있습니다.
503 Service Unavailable
일시적으로 서부가 과부하 상태이거나 점검중이기 때문에 현재 리퀘스트를 처리할 수 없음을 의미합니다.
이 상태가 해소되기까지 시간이 걸리는 경우에는 Retry-After 헤더 필드에 따라 클라이언트에 전달하는 것이 바람직합니다.
출처 : 그림으로 배우는 HTTP&Network Basic
'코딩은 주댕이로 > 인터넷' 카테고리의 다른 글
[HTTP] 웹서버와 HTTP. (프록시, 게이트웨이, 가상호스트) (0) 2017.05.12 [HTTP] HTTP메시지와 HTTP엔티티 (0) 2017.04.24 [HTTP] 쿠키를 왜 쓰는거죠? (0) 2017.03.27 [HTTP] HTTP의 method (1) 2017.03.24 [TCP/IP] HTTP 학습에 필요한 IP, ARP, TCP를 짚고 넘어가보자. (2) 2017.03.21