HTTP 상태 코드 정리

hs·2021년 8월 24일
3
post-thumbnail

우리가 평상시 웹을 사용하다 자주보는 에러로 404 에러등이 있었다. 하지만 왜 이러한 에러가 나타나는지에 대해 한번도 생각해 본 적이 없었지만 REST API에 대해 공부하다 코드마다 뜻이 다르다는 것을 알게되었다. 그래서 그에 대한 대표적인 상태 코드에 관해 정리를 해본다.

상태 코드

상태 코드는 3자리 숫자로 만들어져 있으며, 첫번째 자리에 따라 뜻하는 바가 다르다. 또한 4와 5는 정상적인 상황이 아닌 에러 코드이다.

  • 1xx (정보) - 요청을 받았으며 프로세스를 계속 진행한다.
  • 2xx (성공) - 요청을 성공적으로 받았고 인식했고 수용한다.
  • 3xx (리다이렉션) - 요청을 마치기 위해 추가적인 작업이 필요하다.
  • 4xx (클라이언트 오류) - 요청의 문법이 잘못되었거나 클라이언트에 오류가 있어 처리가 불가능하다.
  • 5xx (서버 오류) - 서버가 유요한 요청을 명백하게 수행하지 못했다.

1xx : 조건부 응답(information responses)

101 (Continue) - 진행중임을 의미한다. 서버는 요청의 첫 번째 부분을 받았고 나머지를 기다리고 있다는 것을 나타낸다.

101 (Switching Protocol) - 클라이언트에 의해 보낸 업그레이드 요청 헤더에 대한 응답으로 보내진다.

102 (Processing) - 서버가 요청을 수신하였으며 처리중이지만, 아직 제대로 된 응답을 할 수 없음을 알려준다.

2xx : 성공(Successful reponses)

200 (ok) - 서버가 요청을 제대로 처리했다는 뜻이다.

201 (Created) - 성공적으로 요청되었으며 서버가 새 리소스를 작성했다.

202 (Accepted) - 서버가 요청을 접수했지만 아직 처리하지 않았다.

203 (Non-Authoritative Information) - 요청에 대해서 보내줄 수 있는 콘텐츠는 없지만 헤더는 의미 있을 수 있습니다.

204 (No Content) - 요청에 대해서 보내줄 수 있는 콘텐츠가 없지만, 헤더는 의미있을 수 있습니다.

205 (Reset Content) - 요청을 완수한 이후에 사용자 에이전트에게 이 요청을 보낸 문서 뷰를 리셋하라고 알려준다.

206 (Partial Content) - 클라이언트에서 복수의 스트림을 분할 다운로드를 하고자 범위 헤더를 전송했기 때문에 사용됩니다.

3xx : 리다이렉션 완료(Redirection messages)

300 (Multiple Choice) - 서버가 요청에 따라 여러 조치를 선택할 수 있다. 서버가 사용자 에이전트에 따라 수행할 작업을 선택하거나, 요청자가 선택할 수 있는 작업 목록을 제공한다.

301 (Moved Permanently) - 요청한 리소스의 URI가 변경되었음을 의미한다.

302 (Found) - 요청한 리소스의 URI가 일시적으로 변경되었음을 의미한다.

303 (See Other) - 요청자가 다른 위치에 별도의 GET 요청을 하여 응답을 검색할 경우 서버는 이 코드를 표시한다.

304 (Not Modified) - 요청된 리소스를 재전송할 필요가 없음을 나타낸다.

305 (Use Proxy) - 요청자는 프록시를 사용하여 요청한 페이지만 엑세스 할 수 있다.

306 (Unused) - 더이상 사용되지 않으며, 현재는 추후 사용을 위해 예약되어 있다는 것을 의미한다.

307 (Temporary Redirect) - 임시 리다이렉션. 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청시 원래 위치를 사용해야 한다는 것을 의미한다.

4xx : 요청 오류(Client error responses)

400 (Bad Request) - 요청이 잘못된 문법으로 인하여 서버가 이해할 수 없음을 의미한다.

401 (Unauthorized) - 권한 요청. 이 요청은 인증을 필요로 하다는 것을 의미한다. 서버는 로그인이 필요한 페이지에 대해 이 응답을 표시한다.

402 (Payment Required) - 결제 오류

403 (Forbidden) - 서버가 요청을 거부하고 있는 것이다. 401과는 다르게 서버는 클라이언트가 누구인지 알고 있다.

404 (Not Found) - 서버가 요청한 페이지를 찾을 수 없다는 것을 의미. ex) 서버에 존재하지 않는 페이지

405 (Method Not Allowed) - 요청에 지정된 방법을 사용할 수 없다. POST로 요청을 받는 서버에 GET으로 보내는 경우 등

406 (Not Acceptable) - 요청한 페이지가 요청한 콘텐츠 특성으로 응답할 수 없다.

407 (Proxy Authentication Required) - 이 상태 코드는 401(권한 없음)과 비슷하지만 요청자가 프록시를 사용하여 인증해야 한다.

408 (Request Timeout) - 서버의 요청 대기가 시간을 초과하였다.

409 (Conflict) - 서버가 요청을 수행하는 중에 충돌이 발생했다. 서버는 응답할 때 충돌에 대한 정보를 포함해야한다.

410 (Gone) - 요청한 콘텐츠가 서버에서 영구적으로 삭제되었으며, 전달해 줄 수 있는 주소 역시 존재하지 않을 때 보냅니다.

411 (Length Required) - 길이 필요. 서버는 유효한 콘텐츠 길이 헤더 입력란 없이는 요청을 수락하지 않는다.

412 (Precondition Failed) - Request-header field에 하나 이상의 선결 조건에 대한 값이 서버에서의 테스트 결과 false로 나왔을 경우에 발생한다.

413 (Payload Too Large) - 요청이 너무 커서 서버가 처리할 수 없다.

414 (URI Too Long) - 요청 URI(일반적으로 URL)가 너무 길어 서버가 처리할 수 없다.

415 (Unsupported Media Type) - 요청이 요청한 페이지에서 지원하지 않는 형식으로 되어 있다.

416 (Requested Range Not Satisfiable) - 요청이 페이지에서 처리할 수 없는 범위에 해당되는 경우 서버는 이 상태 코드를 표시한다.

417 (Expectation Failed) - Expect 요청 헤더 필드로 요청한 예상이 서버에서는 적당하지 않음을 알려줍니다.

5xx : 서버 오류(Server error reponses)

500 (Internal Server Error) - 서버에 오류가 발생하여 요청을 수행할 수 없다.

501 (Not Implemented) - 서버에 요청을 수행할 수 있는 기능이 없다.

502 (Bad Gateway) - 불량 게이트웨이. 서버가 게이트웨이로부터 잘못된 응답을 수신했음을 의미합니다.

503 (Service Unavailable) - 서버가 오버로드되었거나 유지관리를 위해 다운되었기 때문에 현재 서버를 사용할 수 없다.

504 (Gateway Timeout) - 서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버에서 제때 요청을 받지 못했다.

505 (HTTP Version Not Supported) - 서버가 요청에 사용된 HTTP 프로토콜 버전을 지원하지 않는다.

profile
무엇이든 끝까지 보람차게

0개의 댓글