Http&Network Basic - 4

haechi·2022년 9월 14일
0

Web

목록 보기
64/69

Chapter#4


상태 코드

클라이언트가 서버로 리퀘스트를 보낼 때 서버에서 그 결과가 어떻게 되었는지 알려주는 것이 상태 코드의 역할이다.
정상적으로 처리했는지, 에러였는지 알 수 있다.

200 OK와 같이 3자리 숫자와 설명으로 나타낸다.
숫자 첫 번째 자리는 리스폰스의 클래스를 나타내고, 나머지 2자리는 분류가 따로 없다.

이 리스폰스의 클래스는 아래와 같이 5개가 정의되어있다.

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

대표적인 상태 코드

- 2XX 성공(Success)

  • 200 OK
    리퀘스트가 정상으로 처리되었음을 나타냄.
    리스폰스에서 상태 코드와 함께 되돌아 오는 정보는 메소드에 따라 다르다.
  • 204 No Content
    서버가 리퀘스트를 받아서 처리하는 데 성공했으나, 리스폰스에 엔티티 바디를 포함하지 않는다.(엔티티 바디를 되돌려 보내서도 안된다.)
    -> 리스폰스를 수신했어도 화면이 변하는 일이 없다. 보통 서버에 정보를 보내는 것만 필요한 경우 사용.
  • 206 Partial Content
    Range에 의해서 범위가 지정된 리퀘스트에 의해 서버가 부분적 GET 리퀘스트를 받았음을 나타냄.
    리스폰스에 Content-Range로 지정된 범위의 엔티티가 포함된다.

- 3XX 리다이렉트(Redirection)

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

  • 301 Moved Permanently
    리퀘스트된 리소스에는 새로운 URI가 부여되어 있어서, 이후에는 해당 리소스를 참조하는 URI를 사용해야 한다는 것을 나타낸다.
    북마크하고 있는 경우 -> Location 헤더 필드에서 가리키고 있는 URI에 북마크를 다시 하는게 좋다.
  • 302 Found
    리퀘스트된 리소스에는 새로운 URI가 할당되어있어 그 URI를 참조해 주길 바란다는 의미를 나타낸다.
    301과 유사하나, 302의 경우 영구적인 이동이 아닌 일시적인 것. -> 이동하는 곳의 URI는 앞으로도 이동 될 가능성이 있고, 돌려준 페이지에 대해서 계속해서 참조해야한다.
  • 303 See Other
    리퀘스트에 대한 리소스는 다른 URI에 있어서 GET 메소드를 사용해서 얻어야 한다는 것을 나타낸다.
    302와 같지만, 리다이렉트 장소를 GET 메소드로 얻어야 한다고 명확하게 되어있다는 것이 차이점.
  • 304 Not Modified
    클라이언트가 조건부 리퀘스트를 했을 때 리소스에 대한 액세스는 허락하나, 조건이 충족되지 않음을 표시.
    -> 304를 되돌려 줄 경우 리스폰스 바디에 어떤 것도 포함X. 3XX에 분류 되어있으나 리다이렉트와는 무관
  • 307 Temporary Redirect
    302와 같은 의미를 지니나, 307에서는 브라우저 사양에 따라 POST에서 GET으로 치환 하지 않는다. 다만, 브라우저마다 리스폰스를 처리하는 동작이 다를 수 있다.

- 4XX 클라이언트 에러(Client Error)

클라이언트의 원인으로 에러가 발생했음을 나타냄.

  • 400 Bad Request
    리퀘스트 구문이 잘못되었음을 나타낸다. 해당 에러가 발생한 경우 리퀘스트 내용을 재검토후 재송신 할 필요가 있다.
    (브라우저는 이를 200 OK와 같이 취급)

  • 401 Unauthorized
    송신한 리퀘스트에 HTTP 인증 정보가 필요하다는 것을 나타낸다. 이미 1번 리퀘스트가 이루어진 경우, 유저 인증에 실패했음을 표시한다.
    401을 포함한 리스폰스를 되돌리는 경우 리퀘스트 된 리소스에 적용되는 challenge를 포함한 WWW-Authenticate 헤더 필드를 포함할 필요가 있다. + (브라우저에서 처음 401 리스폰스를 받은 경우 인증을 위한 다이얼로그가 표시된다.)

  • 403 Forbidden
    리퀘스트된 리소스의 액세스가 거부되었음을 나타낸다. 서버 측은 거부의 이유를 분명히 할 필요가 있고, 이유를 명확하게 하는 경우 엔티티 바디에 기재해 유저 측에 표시한다.
    -> 403이 발생한 원인으로는 파일 시스템의 퍼미션이 부여되지 않은 경우, 액세스 권한에 문제(허가되지 않은 송신 IP 주소의 액세스 등)가 있는 경우 등이 있다.

  • 404 Not Found
    리퀘스트한 리소스가 서버상에 없다는 것을 나타낸다. 외에도 서버 측에서 해당 리퀘스트를 거부하고 싶으 이유를 분명히 하고 싶지 않은 경우에도 사용.


- 5XX 서버 에러 (Server Error)

서버 원인으로 에러가 발생하고 있음을 나타냄

  • 500 Internal Server Error
    서버에서 리퀘스트를 처리하는 도중 에러가 발생하였음을 나타낸다.
    웹 애플리케이션에 에러가 발생 혹은 일시적인 경우도 있다.

  • 503 Service Unavaliable
    일시적으로 서버가 과부하 상태이거나 점검중이기 때문에 현재 리퀘스트를 처리할 수 없음을 나타낸다.


주의 : 상태 코드가 현재 상황과 불일치할 수도 있다는 점.

profile
공부중인 것들 기록

0개의 댓글