HTTP 상태 코드는 최상위 응답(General)에 표시되는 세 자리 숫자입니다. 클라이언트의 웹 브라우저와 서버 간에 HTTP 요청에 대한 응답을 반환합니다. HTTP 응답은 클라이언트의 웹 브라우저에 결과를 표시하기 위해 서버에서 처리를 수행하고 "General", "Message Header", "Response body"의 내용으로 텍스트로 표시됩니다.
웹 서버 응용 프로그램이 반환하는 가장 많은 상태 코드는 "200"입니다. 200은 정상적으로 처리를 할 수 있었음을 의미하기 때문에, 우리가 웹사이트를 보고 있을 때에는 표시하지 않고, 결과만이 웹 페이지의 표시라고 하는 형태로 표시되기 때문에 눈치채기 어렵습니다. 하지만 잘 보는 것은 에러가 나왔을 때입니다. 웹 사이트를 탐색하려고 URL을 입력했을 때, 웹 브라우저에서 「404 Not Found」나 「500 Internal Server Error」나 「503 Service Unavailable」등이 표시되어 버린 적이 있습니까? 이것은 어떠한 에러가 있어 웹 페이지가 볼 수 없게 되어 버렸을 때의 결과가 웹 브라우저에 표시한 예입니다. 다음은 주된 각 status code의 설명을 정리해 보았습니다.
HTTP 100번대 Informational(정보 응답)
클라이언트로부터의 요청을 받아들일 수 있고 계속해서 처리되고 있는 상태입니다. 처리가 시작된 시점의 타이밍이므로 처리 중의 상태이지만, https 프로토콜에 의한 request와 response는 순간적으로 수행되기 때문에 인간에게는 체감할 수 없을 정도의 속도로 의식을 할 수는 없습니다. 대용량의 동영상 처리의 경우는 프로토콜 전환에 의해 처리에 조금 시간이 걸리고 타이밍이 조금 어긋나는 일도 있습니다.
HTTP 상태 코드 | 설명 | 상태 |
100 Continue | 요청 계속 가능 | 정상 |
101 Switching Protocol | 프로토콜 전환 | 정상 |
102 Processing | 처리 중 | 정상 |
103 Early Hints | 조기에 예측되는 헤더 전달 | 정상 |
HTTP 200번대 Success(성공 응답)
클라이언트로부터 요청이 서버로 보내져 이행되어 수리된 상태입니다. 성공한 후에는 요청에 따라 서버에서 처리하고 클라이언트에게 응답을 반환합니다. 우리가 평소 인터넷을 이용할 때 웹 페이지를 볼 때도 웹 브라우저를 이용하지만, Google 크롬의 개발 모드 창의 '네트워크' 탭에서 웹 페이지 내에 로드된 정상적으로 처리된 파일 그룹은 "Status Code 200"으로 확인할 수 있습니다.
HTTP 상태 코드 | 설명 | 상태 |
200 OK | 요청이 성공적으로 처리되었습니다. | 정상 |
201 Created | 요청 성공 및 리소스 생성 완료 | 정상 |
202 Accepted | 요청을 받았지만 처리되지 않았습니다. | 정상 |
203 Non-Authoritative Information | 요청이 성공했지만 변환 프록시가 원래 서버의 200 (OK) 응답에서 페이로드를 변경했습니다. |
정상 |
204 No Content | 요청에 보내는 콘텐츠는 없지만 헤더는 유용합니다. | 정상 |
205 Reset Content | 클라이언트에게 문서 보기를 재설정하도록 지시 | 정상 |
206 Partial Content | 요청된 범위의 데이터 및 리소스의 일부만 요청이 성공 | 정상 |
HTTP 200 확인
HTTP 200 OK를 확인하려면 Google 크롬에서 F12 키를 누르면 개발 창이 나타나 상황을 볼 수 있습니다. 「Status」가 200인 파일은 정상적으로 처리되어 화상이면 표시되고, html나 css 파일이면 정상적으로 읽어들여지고 있는 것을 확인할 수 있고, javascript 이면 읽어들여 동작하고 있다 상태를 나타냅니다.
HTTP 300번대 Redirection(리디렉션)
요청을 완료하려면 추가 처리가 필요합니다. 이용 예를 바탕으로 설명을 하면, 「300 Multiple Choice」는 PC 화면과 스마트폰 화면으로 Web 애플리케이션이 헤어지고 있는 경우에 이용합니다. 반응형 웹 디자인에서 원 소스 페이지에서 표현하기 어려운 경우 두 개의 사이트를 만들고 사용자 에이전트에 따라 분산합니다. "301 Moved Permanently"는 301 redirection이라고 하며, 영구적으로 페이지 이동을 하는 경우에 사용됩니다. 웹사이트 리뉴얼 시에, directory를 정비해 바뀌었을 경우에 각 페이지에 대해서 redirect 설정을 해 강제적으로 페이지 이동을 합니다.
HTTP 상태 코드 | 설명 | 상태 |
300 Multiple Choice | 요청에 대해 여러 응답이 있음을 나타냅니다. | 정상 |
301 Moved Permanently | 영구적으로 이동 | 정상 |
302 Found | 일시적으로 이동 ※ Google 검색 엔진의 검색 리스트에서는 구 URL을 나타내기 위해 장래에 원래의 URL로 되돌릴등의 때에 이용합니다. |
정상 |
304 Not Modified | 갱신되어 있지 않다 ※ 정상적으로 처리되고 있습니다만 브라우저 캐시의 내용을 표시하고 있기 때문에, 서버로부터 다운로드를 하고 있지 않습니다. |
정상 |
HTTP 301 Moved Permanently와 HTTP 302 Found의 차이
HTTP 301 및 HTTP 302 redirection은 "이전이 영구적이면 301"이고 "이전이 일시적이면 302"를 사용합니다. 이용 예는 HTTP 301 Moved Permanently 이면, 웹 사이트의 리뉴얼로 directory가 바뀌었을 경우에 영구적으로 redirection을 하기 위해서 HTTP301을 이용합니다. HTTP 302 Found는 웹 사이트가 리뉴얼 중이고 일시적으로 URL이 다르기 때문에, 어느 쪽이든 URL로 되돌리는 경우나, 글로벌화에 대응한 사이트에서 다언어화를 하고 있는 경우에 국가별 IP 주소로 배분한다 일 등으로 이용될 수 있고, 아무도 일시적인 이동으로 결국 원래 URL로 돌아가는 것을 의미합니다. Google 검색 검색 엔진 최적화는 301 및 302 redirection 방법에서도 동일한 방식으로 처리되므로 이전 URL의 페이지 순위가 인계됩니다.
HTTP 400번대 Client Error(클라이언트 오류)
4xx 계의 에러는 클라이언트(사용자) 측에서 조작이나 입력에 문제가 있을 때에 나오는 에러입니다. 만약 이 계통의 에러가 나와 버리면 한번 자신이 한 작업을 재검토해 봅시다.
HTTP 상태 코드 | 설명 | 상태 |
400 Bad Request | 일반적인 클라이언트 오류 | 오류 |
401 Unauthorized | 액세스 권한이 없거나 인증 실패 | 오류 |
402 Payment Required | 요금을 지불할 때까지 요청을 처리할 수 없는 상태 | 오류 |
403 Forbidden | 보기 권한이 없는 파일이나 폴더 | 오류 |
404 Not Found | 웹페이지를 찾을 수 없음 | 오류 |
405 Method Not Allowed | 보내는 클라이언트 측 메서드가 허용되지 않음 | 오류 |
406 Not Acceptable | 서버측이 접수 불가능한 값(파일의 종류 등)이며 제공할 수 없는 상태 | 오류 |
407 Proxy Authentication Required | 프록시 서버를 통해 통신할 때 프록시 서버 자격 증명이 부족합니다. | 오류 |
408 요청 시간 초과 | 요청을 보낸 후 상호 작용하는 데 시간이 너무 길기 때문에 실패 | 오류 |
409 Conflict | 서버에 이미 존재하는 데이터가 충돌하여 요청을 완료할 수 없음 | 오류 |
410 Gone | 파일이 삭제되었기 때문에 거의 영구적으로 웹 페이지가 없습니다. | 오류 |
411 Length Required | Content-Length란 요청 헤더에 보내는 데이터 용량이 쓰여 있는 항목 서버에서 Content-Length 헤더가 없기 때문에 액세스를 거부했다. |
오류 |
412 Precondition Failed | 헤더에 정의된 전제 조건이 충족되지 않은 경우 액세스 거부됨 | 오류 |
413 Payload Too Large | 파일을 업로드할 때 서버에서 정한 파일 용량의 상한을 초과했기 때문에 액세스 거부됨 |
오류 |
414 URI Too Long | 지정한 URL이 너무 깁니다. | 오류 |
415 Unsupported Media Type | 서버에서 허용하지 않는 요청 유형으로 인해 액세스가 거부되었습니다. | 오류 |
416 Range Not Satisfiable | 서버가 요청한 범위(용량)를 제공할 수 없음 | 오류 |
417 Expectation Failed | 서버가 확장된 상태 코드를 반환할 수 없음 | 오류 |
422 Unprocessable Entity | WebDAV의 확장 상태 코드 요청은 적절하지만 의미가 다르므로 서버가 반환 할 수 없습니다. |
오류 |
423 Locked | WebDAV의 확장 상태 코드 요청 내용이 잠겨 있기 때문에 서버가 반환 할 수 없습니다. |
오류 |
425 Too Early | 서버가 반복 처리가 발생할 가능성이 있는 요구라고 판단했기 때문에 처리를 할 수 없다고 판단했다 ※ 무한 루프로 서버에 고부하가 걸리는 리스크의 가능성이 있기 때문에 |
오류 |
426 Upgrade Required | Upgrading to TLS Within HTTP/1.1의 확장 상태 코드 HTTP/1.1로 업그레이드가 필요하기 때문에 서버가 처리할 수 없음 |
오류 |
429 Too Many Requests | 일정 시간 내에 요청 수가 너무 많기 때문에 액세스를 거부했다 ※ DDos 공격으로 인한 서버 다운 위험을 피하기 위해 |
오류 |
431 Request Header Fields Too Large | 요청 헤더가 너무 길어서 서버 처리가 거부되었습니다. | 오류 |
HTTP 500번대 Server Error(서버 에러)
5xx 계의 에러는 서버 측에 있어 시스템 관리자가 대응 중으로 클라이언트 측에서는 복구할 때까지 아무것도 할 수 없습니다. 서버 장해가 복구되기까지는 시간이 걸리기 때문에, 어느 정도의 시간을 두고 나서 다시 액세스를 하면 정상적으로 표시하는 일이 있습니다. 렌탈 서버와 클라우드 서비스에서는 장애 정보라는 형태로 알림을 전달하는 기업도 있습니다. 또한 유명한 대규모 서비스로 대규모 장애가 일어나 버리면 트위터 등의 SNS에서 시끄러워지고 있거나 포털 미디어 뉴스 기사에서 다루어지는 경우도 있기 때문에 눈에 띄는 일도 생각합니다. 시스템이 복구한 후 다시 액세스를 하면 웹 서비스나 클라우드 등의 시스템 환경에 접속할 수 있게 되므로 당황하지 말고, 우선은 상황을 알고 있으면 좋습니다.
HTTP 상태 코드 | 설명 | 상태 |
500 내부 서버 오류 | 일부 서버 내에서 발생한 오류 | 오류 |
501 Not Implemented | 서버가 요청을 충족하는 데 필요한 기능을 지원하지 않음 | 오류 |
502 Bad Gateway | 게이트웨이 프록시 서버가 잘못된 요청을 수신하고 거부했습니다. | 오류 |
503 Service Unavailable | 일시적으로 서버에 액세스할 수 없음 | 오류 |
504 게이트웨이 타임 아웃 | 요청을 보낸 서버의 적절한 응답없이 시간 초과 | 오류 |
505 HTTP Version Not Supported | HTTP 버전이 서버에서 지원되지 않음 | 오류 |
506 Variant Also Negotiates | Transparent Content Negotiation in HTTP에 정의된 확장 상태 코드 URL을 반환하는 콘텐츠에 배치 오류 등으로 인한 내부 서버 오류 |
오류 |
507 Insufficient Storage | WebDAV 확장 상태 코드 서버로 처리하기 위한 스토리지 용량 부족 |
오류 |
508 Loop Detected | 주로 개발중인 프로그램 처리로 무한 루프에 빠졌기 때문에 서버가 조작을 종료 | 오류 |
510 Not Extended | 주로 정적 파일에 대한 액세스 집중으로 인해 일시적으로 표시되는 오류 | 오류 |
511 Network Authentication Required | 네트워크 인증 필요 | 오류 |
'IT-Network' 카테고리의 다른 글
DNS 구조 (0) | 2022.12.20 |
---|---|
[TCP/IP] TCP/IP 란? (1) | 2022.12.18 |
HTTP란? (0) | 2022.12.18 |
IP 주소란? (0) | 2022.12.18 |
[OSI 7 layer] 네트워크 기본 지식 (0) | 2022.12.05 |
댓글