HTTP Response Code 정리

rvlwldev·2023년 2월 5일
0

CS

목록 보기
4/12
post-custom-banner

공부하다보면, 아니면 가끔 일생생활 속에서도 404, 500에러 등을 접해본 적이 있을것이다.
이런 에러코드(4xx, 5xx), 또는 상태를 알려주는 여러 코드들이 존재한다.
1xx ~ 5xx의 형태로 앞자리 숫자에 따라 크게 다섯가지로 분류된다.

첫자리의 의미

  • 1xx (정보): 요청을 받았으며 작업을 계속 진행
  • 2xx (성공): 요청을 성공적으로 받았으며 처리함
  • 3xx (리다이렉션): 요청 완료를 위해 추가 동작이 필요함
  • 4xx (클라이언트 오류): 클라이언트의 요청이 잘못되었거나 오류가 있음
  • 5xx (서버 오류): 서버가 유효한 요청을 처리하지 못함

1xx

  • 100 : 클라이언트는 요청을 계속해야 한다. 서버는 이 코드로 반환함으로써 요청의 일부분을 받았으며 나머지 부분이 필요하다는 것을 알린다.
  • 101 : (프로토콜 전환) 클라이언트가 서버에 프로토콜 전환을 요청, 서버는 이를 승인하는 중이다.
  • 102 : 서버가 요청을 받았지만, 아직 올바른 응답을 반환할 수 없다.

2xx

  • 200 : (성공) 올바른 요청과, 응답 처리가 완료되었음, 주로 요청된 페이지를 반환했다는 의미로 사용됨. 가장 흔하게 볼 수 있는 응답코드.
  • 201 : (생성완료) 성공적으로 요청되었으며 서버에서 새로운 리소스를 생성함.
  • 202 : (허용) 서버가 요청을 접수했지만 아직 처리하지 않음.
  • 203 : (신뢰할 수 없는 정보) 서버가 요청을 성공적으로 처리했지만 다른곳에서 수신된 정보를 제공하고 있다.
  • 204 : (콘텐츠 없음) 서버가 요청을 성공적으로 처리했지만 콘텐츠를 제공하지 않음.
  • 205 : (새로고침 필요) 서버가 요청을 성공적으로 처리했지만 콘텐츠를 표시하지 않음.
    (204 응답과 달리 이 응답은 요청자가 문서보기를 재설정할 것을 요구 ex.form 양식 비우기).
  • 206 : (일부만 제공) 서버가 GET 요청의 일부분만 성공적으로 처리했다.
  • 207 : 여러 리소스가 여러 상태코드인 상황이 적절한 경우.
    이 코드는 WebDAV에 사용됨.
  • 208 : DAV 바인딩 멤버는 이미 응답의 앞 부분에 열거되어 있으며 다시 포함되지 않음.
    (207 과 마찬가지로 WebDAV 전용)
  • 226 : 서버가 사용자의 GET 요청에 대한 의무를 다했으며, 현재 인스턴스에서 하나 이상의 인스턴스 조작 결과를 보낼 때 사용됨. HTTP Delta Encoding 전용.

3xx

  • 300 : (복수응답) 서버에서 여러 개의 응답이 있음. (응답을 선택하는 방법은 표준화되지 않아 잘 사용되지 않음)
  • 301 : (영구이동) 영구적으로 컨텐츠가 이동됨.
  • 302 : 일시적으로 컨텐츠가 이동됨.
  • 303 : 서버가 사용자의 GET 요청을 처리하여 다른 URL에서 요청된 정보를 가져올 수 있도록 응답하는 코드. HEAD 요청 이외의 모든 요청을 다른 위치로 자동으로 전달됨.
  • 304 : 브라우저에서 캐시된 페이지를 버전이 호출됨.
  • 305 : (프록시 사용) 클라이언트는 프록시를 사용하여 요청한 페이지만 액세스가 가능.
    서버가 이 응답을 반환하면 사용할 프록시 서버의 정보도 포함되어 있을 수 있음.
    현재 사용중지(Deprecated)된 비권장 응답코드
  • 307 : (임시 리다이렉션) 302와 동일하게 일시적인 컨텐츠 이동을 나타내지만,
    HTTP 메소드의 변경을 허용하지 않아 추후 원래 위치에서 계속해야함.
  • 308 : (영구 리다이렉션) 307과 같이 HTTP 메소드의 변경을 허용하지 않고, 영구적인 컨텐츠 이동을 나타냄.

4xx

  • 400 : 잘못된 요청을 나타냄.
  • 401 : (권한없음) 로그인 등의 인증을 거치지 않을 경우 나타남.
  • 402 : (결재필요) 결재가 필요한 리소스에 접근했을 경우 나타남. 현재는 거의 사용하지 않고 추후에 사용하기 위해 예약해둔 코드. 표준도 현재 존재하지 않는다.
  • 403 : (거부) 서버에서 요청을 거부할 경우 나타남. 권한이 없을때도 나타날 수 있는데 401코드와는 다르게 인증여부와는 무관하다.
  • 404 : (찾을 수 없음) 가장 많이 접할 수 있는 코드중 하나로 찾는 리소스가 없을때 나타남.
  • 405 : (허용되지 않음) 서버에서 허용되지 않은 메소드로 요청시 나타남.
  • 406 : 올바른 요청을 전송했으나 서버에서 받아들일 수 없을 경우 나타남. 방화벽에 경우가 가장 흔함.
  • 407 : 프록시 인증이 필요할 경우 나타남.
  • 408 : (시간 초과) 요청 중 시간이 초과되었을때 나타남.
  • 409 : (충돌) 사용자의 요청이 서버와 충돌을 일으킬 경우 나타남.
  • 410 : (사라짐) 404와는 달리 요청한 리소스가 사라진 경우를 나타냄, 만약 리소스가 이동되었을 경우 301을 사용하여 새 위치를 지정해야 하며 주로 검색엔진결과에서 해당 주소가 사라졌을때 나타남.
  • 411 : 서버에 요청시 Content-Length 값을 지정하지 않아 서버에서 응답을 거부함.
  • 412 : (전제조건 실패) 보통 요청 시 Request Header의 필요한 데이터가 충족하지 않을 때 나타남.
  • 413 : 요청 Body가 너무 길 때 나타남. 가끔 동영상 등의 대용량 파일을 서버로 전송할 때 나타나며, 서버에 의해 정의된 제한을 따른다.
  • 414 : URL이 너무 길 때 나타남.
  • 415 : 서버에서 지원하지 않는 타입의 미디어타입을 요청할 때 나타남.
  • 416 : 요청 Header의 Range가 잘못되었을 때 나타남.
  • 417 : (예측실패) 헤더의 Expect값이 서버에서 적절하지 않을 때 나타남.
  • 418 : 만우절 장난으로 만들어진 HTCPCP 프로토콜 사용시 나타남.
    실제로 구현이 가능하다고 함.
  • 420 : 비공식적인 코드이며 Twitter에서 API 사용량이 한계치에 도달했을 경우 나타났다.
    추후 429코드의 등장으로 사용되지 않는다.
  • 421 : (잘못된 요청) 보통 페이지에 TLS암호화를 여러개 적용하고 꼬였을 경우 자주 나타나며 클라이언트에게 잘못된 서버에 연결되어 있을때 나타남.
  • 422 : WebDAV전용으로 문법오류로 인해 서버가 응답할 수 없을 때 나타남.
  • 423 : WebDAV전용으로 요청한 리소스가 잠겨있을때 나타남.
  • 424 : WebDAV전용, 이전에 실패한 요청이 여전히 실패하는 경우 나타남.
  • 425 : 현재 파이어폭스 브라우저를 제외한 다른 브라우저에서는 지원하지 않으며 너무 일찍 서버에 요청을 보냈을때 나타남.
    (참고)
  • 426 : 클라이언트 요청의 프로토콜이 올바르지 않아서 서버에서 처리할 수 없지만, 프로토콜을 업그레이드 한다면 처리할 수도 있을때 나타남, 주로 HTTP/1.1인 클라이언트가 HTTP/2만 지원하는 서버에서 요청할 때 나타남.
  • 428 : 서버로 요청을 보낼때, 요청이 조건부여야만 할때, 보통 PUT 메소드 등으로 데이터가 수정중일때 업데이트 상실을 막기 방지할 때 나타남.
  • 429 : 일정 시간 동안 너무 많은 요청을 보내서 서버가 거부할 때 나타남. 보통 대부분의 API에서 요청을 제한할 때 나타남.
  • 430 : 비공식적인 코드이며 429코드와 유사하게 많은 요청을 보낼때도 나타날 수 있지만, 431코드와 유사하게 요청 Header의 값이 너무 클 때도 나타날 수 있다.
  • 431 : Header의 값이 너무 클 때 나타남. 주로 쿠키, 캐시가 많이 쌓여있을때 나타날 수 있다.
  • 451 : 정부기관의 검열 또는 법적인 이유로 응답할 수 없을 때 나타남, 잘 사용하지는 않으며 한국의 경우 보통 http://warning.or.kr/ 로 리다이렉트 된다.

5xx

구어적으로 '서버가 터졌다' 라고 표현하는 경우가 있는데 보통 아래의 코드들 (특히 500, 502, 503 등의 코드를 접하는 경우가 있다.)

  • 500 : 서버에 오류가 발생해 요청을 처리할 수 없을때 나타남.
  • 501 : (요청 미지원) 서버가 요청을 처리하는데 필요한 기능을 지원하지 않을 경우 나타남.
  • 502 : 게이트웨이가 서버로부터 잘못된 응답을 받았을 때 사용됨. 500과 비슷하게 서버가 터졌을 때 접하는 경우가 있음.
  • 503 : 일시적으로 사이트의 서비스를 이용할 수 없을때 나타남. 보통 서버의 과부하, 또는 어떤 이유로 다운되었을 때 나타난다.
  • 504 : 게이트웨이가 서버에서 응답을 받을 수 없을 때 나타남.
  • 505 : HTTP 버전을 서버에서 처리할 수 없을 때 나타남. 브라우저가 처리 가능한 HTTP 버전을 자동으로 선택하기 떄문에 보기 힘든 코드.
  • 506 : 서버 내부 구성에서 오류가 있을 때 나타남. 보통 반환되는 값의 순환 참조가 일어날 때 주로 나타남.
  • 507 : WebDAV전용, 선택된 리소스가 용량부족 등의 이유로 저장 할 수 없어서 처리할 수 없을 때 나타남.
  • 508 : WebDAV전용, 서버가 요청을 처리하는 도중 무한루프가 돌 때 나타남.
  • 509 : 비공식적인 코드이며 대역폭 제한을 초과했을 때 나타남. Apache HTTP 서버 등에서 사용에서 사용하던 코드였으나 웹호스팅을 사용하는 일이 많아져서 표준응답코드처럼 사용된다.
  • 510 : 서버가 요청을 처리할 때 요청에 대한 추가 확장이 필요한 경우 나타남.
  • 511 : (네트워크 인증필요) 네트워크 엑세스 권한을 필요로 할 때 나타남. 주로 네트워크에 로그인이 필요한 경우 나타남.
  • 520 : 비공식적인 코드이며 알 수 없는 오류를 뜻한다. Cloudflare에서 자주 사용되며 웹서버 로그 확인이 필요하다.
  • 521 : 비공식적인 코드이며 서버가 가동중이 아닐 때 나타남. Cloudflare에서 자주 사용.
  • 522 : 비공식적인 코드이며 Cloudflare에서 자주 사용되는 접속 시간을 초과했을때 나타남.
  • 525 : 비공식적인 코드이며 Cloudflare에서 자주 사용됨. 서버와 클라이언트 사이에 SSL/TLS Handshake(신원확인과정)을 할 수 없을 때 뜨는 코드, 보통 TLS를 설정을 안하고 HTTPS 접속이 안되는 서버에 Cloudflare SSL 구성값에 오류가 생긴 경우에 나타남.
  • 526 : 비공식적인 코드이며 Cloudflare에서 자주 사용됨. 서버의 SSL 인증서의 유효성을 검증 할수없고 인증서가 잘못되었을때 나타남.
profile
ㅇ0ㅇ
post-custom-banner

0개의 댓글