[Network] 6-2. HTTP 상태 코드

KYJ의 Tech Velog·2023년 4월 24일
0

Network

목록 보기
10/21
post-thumbnail

HTTP Status Code

클라이언트가 HTTP 요청을 보냈을 때 서버는 상황에 따라 요청에 대해 알맞은 응답을 해주어야 합니다. 그 때 사용하는 것이 상태 코드(Status Code)입니다. 상태 코드만 확인하더라도 클라이언트가 보낸 요청이 성공인지 실패인지 어떤 식으로 성공한 것인지 어떤 식으로 실패한 것인지 확인할 수 있습니다.

1xx - Informational Response(조건부 응답)

전송 프로토콜 수준의 정보 교환 상태 코드입니다.

100 Continue (계속)

임시적인 응답입니다. 지금까지의 상태가 괜찮으며 클라이언트가 계속해서 요청을 하거나 이미 요청을 완료한 경우에는 무시해도 되는 것을 알려줍니다.

101 Switching Protocol(프로토콜 전환)

클라이언트가 보낸 Upgrade 요청 헤더에 대한 응답이며 서버에서 프로토콜을 변경할 것임을 알려줍니다.

102 Processing (처리, WebDAV)

서버가 요청을 수신하였으며 이를 처리하고 있지만 아직 제대로 된 응답을 줄 수 없음을 알려줍니다.

103 Early Hints (사전 도움)

주로 Link 헤더와 함께 사용되어 서버가 응답을 준비하는 동안 사용자 에이전트가 사전 로딩을 시작할 수 있도록 합니다.


2xx - Success(성공)

클라이언트의 요청이 성공적으로 수행되었다는 의미의 상태 코드입니다.

200 OK (성공)

요청이 성공적으로 수행되었다는 의미입니다. HTTP 메소드에 따라 성공의 의미가 다릅니다.

  • GET
    리소스를 불러와서 메시지 바디에 전송
  • HEAD
    개체 헤더가 메시지 바디에 존재
  • PUT & POST
    수행 결과에 대한 리소스가 메시지 바디에 전송
  • DELETE
    삭제를 수행. 응답 메시지가 이후의 상태를 설명
  • TRACE
    메시지 바디는 서버에서 수신한 요청 메시지를 포함

201 Created (작성됨)

요청이 성공적이었으며 그 결과로 새로운 리소스가 생성되었습니다. 일반적으로 POST나 PUT 요청에 대한 응답입니다.

202 Accepted(허용됨)

요청을 수신하였지만 그에 응하여 행동할 수 없습니다. 이 응답은 요청 처리에 대한 결과를 이후에 HTTP 비동기 응답을 보내는 것에 대해서 명확하게 명시하지 않습니다. 다른 프로세스에서 처리 또는 서버가 요청을 다루고 있거나 배치 프로세스를 하고 있는 경우를 위해 만들어졌습니다. 한마디로 서버가 요청을 접수했지만 아직 처리하지 않았다는 것입니다.

203 Non-Authoritative Information (신뢰할 수 없는 정보)

돌려받은 메타 정보 세트가 기존 서버의 것과 일치하지 않지만 로컬이나 서드 파티 복사본에서 수집되었음을 의미합니다. 이러한 조건에서는 200 OK가 우선시되므로 흔히 볼 수 있는 상태 코드는 아닙니다.

204 No Content (내용 없음)

서버에서 정상적인 변경 또는 삭제 처리가 이루어졌지만 새롭게 보일 정보가 없다는 의미입니다.


3xx - Redirection(리다이렉션, 경로 재지정)

클라이언트가 요청을 완료하기 위해 추가적인 조취가 필요합니다.

301 Moved Permanently (영구적 이동)

요청한 리소스의 URI가 변경되었음을 의미합니다. 새로운 URI가 응답에서 주어질 수도 있습니다.

304 Not Modified (변경 없음)

캐시를 목적으로 사용됩니다. 클라이언트가 요청한 자원이 수정되지 않았음을 알려주며 클라이언트가 캐시된 자원을 사용하도록 권하는 상태 코드입니다.


4xx Client Error (클라이언트 오류)

400 Bad Request (잘못된 요청)

잘못된 문법으로 인해 서버가 요청을 이해할 수 없음을 의미합니다.

401 Unauthorized (권한 없음)

요청한 응답을 받기 위해서는 반드시 스스로를 인증해야 합니다. 로그인을 실패한 경우 또는 로그인하지 않은 사용자가 회원의 기능을 사용하려 할 때 사용됩니다.

403 Forbidden (접근 금지)

클라이언트는 콘텐츠에 접근할 권리를 가지고 있지 않습니다. 회원으로서 로그인이 되어 있어도 특정한 권한이 없다면 콘텐츠에 접근할 수 없습니다.

ex) 넷플릭스 미결제 계정

404 Not Found (찾을 수 없음)

서버가 요청받은 리소스를 찾을 수 없습니다. 브라우저에서는 알려지지 않은 URL을 의미합니다. URI가 적절하지만 리소스 자체가 존재하지 않을 수도 있습니다.

405 Method Not Allowed (허용되지 않은 메서드)

요청에 지정된 메소드가 URI로 표시된 리소스에 허용되지 않음을 의미합니다. 예를 들자면 클라이언트가 문서 조회만 제공하는 곳에 POST, PUT, DELETE를 전송해 리소스를 변경하려고 한 경우가 있습니다.

408 Request Timeout (요청 시간 초과)

요청을 한지 시간이 오래된 연결에 일부 서버가 전송하는 상태 코드입니다. 서버가 사용되지 않는 연결을 끊고 싶어 한다는 의미입니다. Chrome, Firefox 처럼 웹서핑 속도를 올리기 위해 HTTP 사전 연결 매커니즘을 사용하는 브라우저들이 해당됩니다. 일부 서버는 이 메시지를 보내지 않고 연결을 끊어버리기도 합니다.


5xx Server Error (서버 오류)

서버로 인한 오류 발생 상태 코드입니다.

500 (내부 서버 오류)

서버에 오류가 발생하여 요청을 수행할 수가 없다는 의미입니다.

501 (구현되지 않음)

서버에 요청을 수행할 수 있는 기능이 없다는 의미입니다. 요청 메소드를 인식하지 못할 때 이 상태 코드를 표시합니다.

502 Bad Gateway (불량 게이트웨이)

서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버에서 잘못된 응답을 받았다는 의미입니다.

503 (서비스를 사용할 수 없음)

서버가 오버로드되었거나 유지관리를 위해 다운되었기 때문에 현재 서버를 사용할 수 없다는 의미입니다. 대개 일시적인 상태입니다.

504 (게이트웨이 시간초과)

서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버에서 알맞은 때에 요청을 받지 못했다는 의미입니다.

0개의 댓글