솜이의 데브로그

4장 ) 결과를 전달하는 HTTP 상태코드 본문

CS/Network

4장 ) 결과를 전달하는 HTTP 상태코드

somsoming 2021. 9. 30. 23:59

Reference : 그림으로 배우는 Http&Network Basic

 

 

1. 상태코드는 서버로부터 리퀘스트 결과를 전달한다

 

클라이언트 리퀘스트 송신시 결과가 정상이면 상태코드 2xx, 에러면 상태코드 4xx, 5xx

상태코드는 200 OK 와 같이 3자리 숫자와 설명으로 나타낸다.

 

상태코드 클래스

  클래스 설명
1xx Informational 리퀘스트를 받아들여 처리중
2xx Success 리퀘스트를 정상적으로 처리했음
3xx Redirection 리퀘스트를 완료하기 위해서 추가 동작이 필요
4xx Client Error 서버는 리퀘스트 이해 불가능
5xx Server Error 서버는 리퀘스트 처리 실패

 

상태코드는 60종류 이상이 있지만, 실제로 자주 사용되고 있는 것은 14종류정도이다.

 

 

2. 2xx 성공 (Success)

2xx 리스폰스는 리퀘스트가 정상적으로 처리되었음을 나타낸다.

  • 200 OK : 클라이언트가 보낸 리퀘스트를 서버가 정상 처리하였음. (리스폰스에서 상태코드와 함께 되돌아오는 정보는 메소드에 따라 다르다)
  • 204 No Content : 서버가 리퀘스트를 받아서 처리하는데는 성공했지만 리스폰스에 엔티티 바디를 포함하지 않는다.
  • 206 Partial Content : Range에 의해서 범위가 지정된 리퀘스트에 의해서 서버가 부분적 GET 리퀘스트를 받았음을 나타낸다. 리스폰스에는 Content-Range로 지정된 범위의 엔티티가 포함된다.

 

3. 3xx 리다이렉트 (Redirect)

리퀘스트가 정상적으로 처리를 종료하기 위해 브라우저 측에서 특별한 처리를 수행해야함을 나타낸다.

  • 301 Moved Permanently : 리퀘스트된 리소스에는 새로운 URI가 부여되어 있기 때문에, 이후로는 그 리소스를 참조하는 URI를 사용해야 한다는 것을 나타내고 있다.
  • 302 Found : 리퀘스트된 리소스에는 새로운 URI가 할당되어 있기 때문에, 그 URI를 참조하라는 의미를 나타내고 있다. 301과는 다르게 영구적인 이동이 아닌 일시적인 것이다.
  • 303 See Other : 리퀘스트에 대한 리소스는 다른 URI에 있기 때문에 GET 메소드를 사용해서 얻어야 한다는 것을 나타내고 있다. 302와의 다른점은 리다이렉트 장소를 GET메소드로 얻어야한다고 명확하게 되어있는 점이다.
  • 304 Not Modified : 클라이언트가 조건부 리퀘스트를 했을 때 리소스에 대한 액세스는 허락하지만, 조건이 충족되지 않음을 표시한다. 304를 되돌려 줄 때는 리스폰스 바디에 어떤 것도 포함되어있어서는 안된다.
  • 307 Temporary Redirect : 302 Found와 같은 의미를 갖지만, 브라우저 사양에 다라 POST에서 GET으로 치환을 하지않는다.

 

 

4. 4xx 클라이언트 에러 (Client Error)

4xx 리스폰스는 클라이언트의 원인으로 에러가 발생했음을 나타낸다.

  • 400 Bad Request : 리퀘스트 구문이 잘못되었음을 나타낸다. 브라우저는 이것을 200 OK와 같이 취급한다.
  • 401 Unauthorized : 송신한 리퀘스트에 HTTP인증 정보가 필요하다는 것을 나타냄. 1번 리퀘스트가 이루어진 경우에는 유저 인증에 실패했음을 표시.
    • 401을 포함한 리스폰스를 되돌리는 경우 리퀘스트 된 리소스에 적용되는 challenge를 포함한 WWW-Authenticate 헤더 필드를 포함해야한다.
    • 브라우저에서 처음 401 리스폰스를 받은 경우 인증을 위한 다이얼로그가 표시된다.
  • 403 Forbidden : 리퀘스트된 리소스의 엑세스가 거부되었음을 나타낸다. 이유는 엔티티 바디에 기재해서 유저측에 표시.
    • 발생 원인으로는 파일 시스템의 퍼미션이 부여되지 않은 경우와 엑세스 권한에 문제가 있는 경우.
  • 404 Not Found : 리퀘스트한 리소스가 서버상에 없다는 것을 나타냄. 또는 거부이유를 밝히지 않는 경우.

 

 

5. 5xx 서버 에러 (Server Error)

5xx 리스폰스는 서버 원인으로 에러가 발생함을 나타낸다.

  • 500 Internal Server Error : 서버에서 리퀘스트를 처리하는 도중에 에러가 발생했음을 나타낸다.
  • 503 Service Unavailable : 일시적으로 서버가 과부하 상태이거나 점검중이기 때문에 현재 리퀘스트를 처리할 수 없음을 나타낸다. 해소되기까지 시간이 걸리는 경우 Retry-After 헤더필드에 따라 클라이언트에 전달하는 것이 좋다.

 

 

상태코드가 현재 상황과 불일치 할 수도 있다.

 

 

 

 

느낀점

http.. 어렵고.. 상태코드는 사실 전공에서 훨씬 다양하게 배웠지만 아직 300번대 에러는 잘 모르겠다.

'CS > Network' 카테고리의 다른 글

5장 ) 네트워크 계층  (0) 2021.10.09
5, 6장 ) 웹 서버, HTTP 헤더(1)  (0) 2021.10.09
4장 ) 데이터링크 계층  (0) 2021.09.30
3장 ) HTTP 정보는 HTTP 메시지에 있다  (0) 2021.09.22
3장 ) 물리계층  (0) 2021.09.22