Web

HTTP Status Code

HTTP status code

프론트엔드와 백엔드는 어떤 방식으로 통신을 할 것인지부터 시작하여 리소스의 생성과 삭제는 어떻게 정의할 것인지, 프론트엔드에서 요청한 백엔드 작업의 성공/실패 여부는 어떻게 알려줄 것인지 등 많은 규칙들을 정의해야한다.

HTTP status codes는 클라이언트와 서버 간의 통신을 할 때 조금 더 명확한 정의를 위해 필요한 요소 중 하나이다.

모든 HTTP 응답 코드는 5개의 클래스(분류)로 구분된다.
상태 코드의 첫 번째 숫자는 응답(상태)의 클래스를 정의한다. 마지막 두 자리는 클래스나 분류 역할을 하지 않는다.

첫자리에 대한 5가지 값들은 다음과 같다

  • 1xx (정보) : 요청을 받았으며 프로세스를 계속한다
  • 2xx (성공) : 요청을 성공적으로 받았으며 인식했고 수용하였다
  • 3xx (리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요하다
  • 4xx (클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없다
  • 5xx (서버 오류) : 서버가 명백히 유효한 요청에 대해 충족을 실패했다

HTTP status code 목록

응답(상태) 대역 응답(상태)코드 이름 설명
정보전송, 조건부 응답 100 Continue 클라이언트로 부터 일부 요청을 받았으며 나머지 정보를 계속 요청함
  101 Switching protocols 요청자가 서버에 프로토콜 전환을 요청했으며 서버는 이를 승인하는 중이다.
통신 성공 200 OK 클라이언트의 요청을 성공적으로 수행함(GET)
  201 Created 클라이언트가 어떠한 리소스 생성을 요청, 해당 리소스가 성공적으로 생성됨(POST를 통한 리소스 생성 작업 시)
  202 Accepted 웹 서버가 명령 수신함(요청 접수 O, 리소스 처리 X)
  203 Non-authoritative information 서버가 클라이언트 요구 중 일부만 전송
  204 No content PUT, POST, DELETE 요청의 경우 성공은 했지만 전송할 데이터가 없는 경우 (요청 성공 O, 내용없음)
리다이렉션 완료 300 Multiple Choice 요청 URI에 여러 리소스가 존재
  301 Moved permanently 요구한 데이터를 변경된 타 URL에 요청함 / Redirect된 경우 (요청 URI가 변경되었을때) (응답 시 Location header에 변경된 URI를 적어 줘야 한다
  302 Not temporarily 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 한다.
  304 Not modified 컴퓨터 로컬의 캐시 정보를 이용함, 대개 gif 등은 웹 서버에 요청하지 않음 (요청 URI의 내용이 변경X)
클라이언트 요청 오류 400 Bad Request 클라이언트의 잘못된 요청을 처리할 수 없음 (API에서 정의되지 않은 요청 들어옴)
  401 Unauthorized 클라이언트가 인증되지 않은 상태에서, 인증이 필요한 페이지를 요청한 경우 (인증 오류)
  402 Payment required 예약됨
  403 Forbidden 접근 금지, 디렉터리 리스팅 요청 및 관리자 페이지 접근 등을 차단(권한 밖의 접근 시도) 403 보다는 400이나 404를 사용할 것을 권고. 403 자체가 리소스가 존재한다는 뜻이기 때문에
  404 Not found 요청한 페이지 없음 (요청 URI에 대한 리소스 존재 X)
  405 Method not allowed 클라이언트가 허용되지 않는 http method 사용함 (API에서 정의되지 않은 메소드 호출)
  406 Not Acceptable 처리 불가
  407 Proxy authentication required 프락시 인증 요구됨
  408 Request timeout 요청 시간 초과
  409 Conflict 모순
  410 Gone 영구적으로 사용 금지
  412 Precondition failed 전체 조건 실패
  414 Request-URI too long 요청 URL 길이가 긴 경우임
  429 Too Many Request 요청 횟수 상한 초과
서버 오류 500 Internal server error 내부 서버 오류
  501 Not implemented 웹 서버가 처리할 수 없음
  502 Bad Gateway 게이트웨이 오류
  503 Service unnailable 서비스 제공(이용) 불가
  504 Gateway timeout 게이트웨이 시간 초과
  505 HTTP version not supported 해당 http 버전 지원되지 않음

HTTP Request 정보

GET /index.html HTTP/1.1              요청 URL정보 (Mehotd /URI HTTP버젼)
user-agent: MSIE 6.0; Window NT 5.0   사용자 웹 브라우져 종류
accept: test/html; */*                요청 데이터 타입 (응답의 Content-type과 유사)
cookie: name=value                     쿠키(인증 정보)
refere: http://abc.com                경유지 URL
host: www.abc.com                     요청 도메인

HTTP Response 정보

HTTP/1.1 200 OK                      프로토콜 버젼 및 응답코드
Server: Apache                       웹 서버 정보
Content-type: text/html              MIME 타입
Content-length: 1593                 HTTP BODY 사이즈
<html><head>.....                    HTTP BODY 컨텐츠

Reference

https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C
https://javaplant.tistory.com/18

'Web' 카테고리의 다른 글

Http Request Header - application/x-www-form-urlencoded, application/json  (1) 2023.12.07
REST API  (0) 2020.11.12
REST  (0) 2020.11.12
브라우저 동작 원리  (0) 2020.11.09
HTTP Method  (0) 2020.10.31