본문 바로가기

프로그래밍/ETC...

HTTP 서버 응답 코드 (Response Code) 정리

클라이언트(웹 브라우저)에서 서버에 어떠한 요청(리퀘스트, Request)를 하면 서버는 응답(리스폰스, Response)를 보내줍니다.

 

적절한 처리가 이루어져서 성공 응답과 함께 결과 값을 보내주기도 하고, 정상적인 처리가 되지 않은 경우에는 실패 응답과 함께 에러 정보를 보내주기도 합니다.

 

웹 개발자라면 기본적으로 서버가 정상 응답한 경우, 200 코드를 보내주는 것은 다들 알고 계실겁니다.

200을 포함하여 200번대 응답은 서버에서 정상적으로 처리하여 응답한 경우, 보내주는 값들입니다.

 

그리고 각 코드는 100번대 단위로 응답 코드가 구분되어 있습니다. (즉, 300번대끼리, 400번대끼리 유사한 형태의 응답 코드라는 의미입니다.)

이처럼 3자리 숫자의 첫번째 값(코드)만 보고도 어떤 종류의 응답인지 알 수 있는데요. 이 첫번째 값을 Response Class라고 합니다.

 

그럼 각 Response Code 에 따라서 어떤 응답을 나타내는지 한 번 볼까요?

 

 

 Response Class Code 

 Response Class 의미

 설명

 1

 Informational (정보)

 리퀘스트를 받고, 처리 중에 있음.

 2

 Success (성공)

 리퀘스트를 정상적으로 처리함.

 3

 Redirection (리디렉션)

 리퀘스트 완료를 위해 추가 동작이 필요함.

 4

 Client Error (클라이언트 오류)

 클라이언트 요청을 처리할 수 없어 오류 발생

 5

 Server Error (서버 오류)

 서버에서 처리를 하지 못하여 오류 발생

 

4번과 5번은 에러이기는 한데, 간단히 차이점을 설명하자면 4xx 에러는 클라이언트의 잘못된 요청으로 서버에서 처리하지 못한 것이고, 5xx 에러는 클라이언트의 요청은 문제가 없으나, 서버에서 처리중에 서버 문제로 인해 오류가 발생한 것이라고 생각하시면 됩니다.

 

 

아래는 자주 접하는 코드를 위주로 작성하였고, 더 상세한 정보는 아래 참고 자료의 위키피디아 링크를 참조해주세요.~

 

 

200 번대 응답(Response) : 성공(Success)

 

200

OK

* 요청 정상 처리.

204

No Content

* 요청 정상 처리하였지만, 돌려줄 리소스 없음.

* 응답에 어떠한 엔티티 바디(Entity Body)도 포함하지 않음.

* 서버에서 처리 후, 클라이언트에 정보를 보낼 필요가 없는 경우 사용. 

206

Partial Content

* Range가 지정된 요청인 경우, 지정된 범위만큼의 요청을 받았다는 것을 알려줌. 

 

 

 

* 300 번대 응답(Response) : 리디렉션(Redirection)

 

301

Moved Permanently

* 요청된 리소스에는 새로운 URI가 지정되어 있기 때문에, 이후로는 새 URI를 사용해야 한다는 것을 나타냄. (영구적인 URI 변경)

302

Found

* 요청된 리소스에는 새로운 URI가 지정되어 있기 때문에, 이후로는 새 URI를 사용해야 한 다는 것을 나타냄. 301과 유사하지만, 302는 일시적인 URI 이동) 

303

See Other

* 이 응답은 요청에 대한 리소스는 다른 URI에 있기 때문에 GET 메서드를 사용해서 얻어야 한다는 것을 나타냄. 302 코드와 같지만, 303은 리디렉션 위치를 GET 메서드를 통해 얻어야 한다고 명확하게 되어 있음. 

304

Not Modified

* 요청한 리소스가 마지막 요청 이후 변경된 적이 없기 때문에 기존 클라이언트의 로컬 캐시 리소스를 사용하도록 알려줌.

300번대로 분류되어 있지만, 리디렉션과는 관계없는 처리를 함.

307

Temporary Redirect

* 임시로 페이지를 리다이렉트 함.

 

 

 

* 400 번대 응답(Response) : 클라이언트 에러 (Client Error)

 

400

Bad Request

* 클라이언트의 요청 구문이 잘못됨.

* 브라우저는 이 응답을 200 OK 응답과 동일한 형태로 취급함.

401

Unauthorized

* 요청 처리를 위해 HTTP 인증(BASIC 인증, DIGEST 인증) 정보가 필요함을 알려줌.

접근 허용을 차단함. 최초 요청에는 인증 다이얼로그 표시하고, 두번째는 인증 실패 응답을 보냄. 

403

Forbidden

* 접근 금지 응답. Directory Listing 요청(서버 파일 디렉토리 목록 표시) 및 관리자 페이지 접근 등을 차단하는 경우의 응답. (파일 시스템 퍼미션 거부, 허가 되지 않은 IP 주소를 통한 액세스의 거부 등)

* 서버는 엔티티 바디에 접근 거부에 대한 이유를 명시하여 보낼 수 있음.

404

Not Found

* 클라이언트가 요청한 리소스가 서버에 없음

405

Mothod Not Allowed

* 허용되지 않는 HTTP 메서드를 사용함. 

 

 

 

* 500 번대 응답(Response) : 서버 에러 (Server Error)

 

500

Internal Server Error

* 서버에서 클라이언트 요청을 처리 중에 에러가 발생함.

503

Service Unavailable

* 서버가 일시적으로 요청을 처리할 수 없음.

* 서버가 과부하 상태이거나 점검중이므로 요청을 처리할 수 없음을 알려줌.

504

Gateway Timeout

* 서버를 통하는 게이트웨이에 문제가 발생하여 시간이 초과됨.

505

HTTP Version Not Supported

* 해당 HTTP 버전에서는 지원되지 않는 요청임을 알려줌.

 

 

 

 

* 참고 자료 : https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

 

* 참고 서적 : 그림으로 배우는 Http & Network Basic 

 


HTTP & Network Basic

저자
우에노 센 지음
출판사
영진닷컴 | 2015-01-26 출간
카테고리
컴퓨터/IT
책소개
이 책은 웹의 근간을 이루는 HTTP를 중심으로 하여 웹, 인터...
가격비교

 

 

* HTTP 상태 코드 (HTTP Status Codes) 에 대한 정의를 포함하고 있는 문서.

 

RFC2616 참조 문서 : http://tools.ietf.org/html/rfc2616 

RFC4918 참조 문서 : http://tools.ietf.org/html/rfc2616

RFC5842 참조 문서 : https://tools.ietf.org/html/rfc5842

RFC6585 참조 문서 : http://tools.ietf.org/html/rfc6585



출처: http://ooz.co.kr/260 [이러쿵저러쿵]


CODE

Description

1XX 조건부 응답

 

100 (계속)

요청자는 요청을 계속해야한다서버는 이 코드를 제공하여 요청의 첫 번째 부분을 받았으며 나머지를 기다리고 있음을 나타낸다.

101 (프로토콜 전화)

요청자가 서버에 프로토콜 전환을 요청했으며 서버는 이를 승인하는 중이다.

 

 

2XX 성공

 

200 (성공)

서버가 요청을 제대로 처리했다는 뜻이다이는 주로 서버가 요청한 페이지를 제공했다는 의미로 쓰인다.

201 (작성됨)

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

202 (허용됨)

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

203 (신뢰할 수 없는 정보)

서버가 요청을 성공적으로 처리했지만 다른 소스에서 수신된 정보를 제공하고 있다.

204 (컨텐츠 없음)

서버가 요청을 성공적으로 처리했지만 컨텐츠를 제공하지 않는다.

205 (컨텐츠 재설정)

서버가 요청을 성공적으로 처리했지만 컨텐츠를 표시하지 않는다. 204응답과 달리 이 응답은 용청자가 문서보기를 재설정할 것을 요구한다. ( 새 입력을 위한 양식 비우기)

206 (일부 컨텐츠)

서버가 GET 요청의 일부만 성공적으로 처리했다.

207 (다중 상태)

 

208 (이미 보고됨)

 

226 IM Used

 

 

 

3XX 리다이렉션 완료

클라이턴트 요청을 마치기 위해 추가 동작을 취해야 한다.

300 (여러 선택항목)

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

301 (영구 이동)

요청한 페이지를 새 위치로 영구적으로 이동했다. GET 또는 HAED 요청에 대한 응답으로 이 응답을 표시하면 요청자가 자동으로 새 위치로 전달된다.

302 (임시 이동)

현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 한다.

303 (기타 위치 보기)

요청자가 다른 위치에 별도의 GET 요청을 하여 응답을 검색할 경우 서버는 이 코드를 표시한다. HAED 요청 이외의 모든 요청을 다른 위치로 자동으로 전달한다.

304 (수정되지 않음)

마지막 요청 이후 요청한 페이지는 수정되지 않았다서버가 이 응답을 표시하면 페이지의 컨텐츠를 표시하지 않는다요청자가 마지막으로 페이지를 요청한 후 페이지가 변경되지 않으면 이 응답(if-Moified-Since HTTP 헤더라고함)을 표시 하도록 서버를 구성해야 한다.

305 (프록시 사용)

요청자는 프록시를 사용하여 요청한 페이지만 액세스할 수 있다서버가 이 응답을 표시하면 요청자가 사용할 프록시를 가리키는 것이기도 하다.

307 (임시 리다이렉션)

현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 한다.

308 (영구 리다이렉션)

 

 

 

4XX 요청 오류

 

400 (잘못된 요청)

서버가 요청의 구문을 인식하지 못했다.

401 (권한 없음)

이 요청은 인증이 필요하다서버는 로그인이 필요한 페이지에 대해 이 요청을 제공할 수 있다.

403 (금지됨)

서버가 요청을 거부하고 있다.

404 (찾을 수 없음)

서버가 요청한 페이지를 찾을 수 없다예를 들어 서버에 존재하지 않는 페이지에 대한 요청이 있을 경우 서버는 이 코드를 제공한다.

405 (허용되지 않는 방법)

요청에 지정된 방법을 사용할 수 없다.

406 (허용되지 않음)

요청한 페이지가 요청한 컨텐츠 특성으로 응답할 수 없다.

407 (프록시 인증 필요)

이 상태 코드는 401(권한 없음)과 비슷하지만 요청자가 프록시를 사용하여 인증해야한다서버가 이 응답을 표시하면 요청자가 사용할 프록시를 가리키는 것이기도 한다.

408 (요청 시간초과)

서버의 요청 대기가 시간을 초과하였다.

409 (충돌)

서버가 요청을 수행하는 중에 충돌이 발생했다서버는 응답할 때 총돌에 대한 정보를 포함해야 한다서버는 PUT 요청과 충돌하는 PUT 요청에 대한 응답으로 이 코드를 요청 간 차이점 목록과 함께 표시해야 한다.

410 (사라짐)

서버는 요청한 리소스가 영구적으로 삭제되었을 때 이 응답을 표시한다. 404(찾을 수 없음코드와 비슷하며 이전에 있었찌만 더 이상 존재하지 않는 리소스에 대해 404 대신 사용하기도 한다리소스가 영구적으로 이동된 경우 301을 사용하여 리소르의 새 위치를 지정해야 한다.

411 (길이 필요)

서버는 유효한 컨텐츠 길이 헤더 입력란 없이는 요청을 수락하지 않는다.

412 (사전조건 실패)

서버가 요청자가 요청 시 부과한 사전조건을 만족하지 않는다.

413 (요청 속성이 너무 큼)

요청이 너무 커서 서버가 처리할 수 없다.

414 (요청 URI가 너무 김)

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

415 (지원되지 않는 미디어 유형)

요청이 요청한 페이지에서 지원하지 않는 형식으로 되어 있다.

416 (처리할 수 없는 요청범위)

요청이 페이지에서 처리할 수 없는 범위에 해당된느 경우 서버는 이 상태 코드를 표시한다.

417 (예상 실패)

서버는 Expect 요청 헤더 입력란의 요구사항을 만족할 수없다.

418 (I’m a teapot)

 

420 (Enhance Your Calm)

 

422 (처리할 수 없는 엔티티, WebDAV)

 

423 (잠김, WebDAV)

 

424 (실패된 의존성)

 

425 (정렬되지 않은 컬렉션인터넷 초안)

 

426 (업그레이드 전용)

 

428 (전제조건 필요)

 

429 (너무 많은 요청)

 

431 (요청 헤더 필드가 너무 큼)

 

444 (응답 없음)

 

449 (다시 시도마이크로소프트)

 

450 (윈도 자녀 보호에 의해 차단됨마이크로소프트)

 

451 (법적인 이유로 이용 불가)

 

494 (요청 헤더가 너무 큼)

 

495 (Cert 오류)

 

496 (Cert 없음)

 

497 (HTTP to HTTPS)

 

499 (클라이언트가 요청을 닫음)

 



출처: http://onecellboy.tistory.com/346?category=401949 [신불사 - 신현호라 불리는 사나이]

'프로그래밍 > ETC...' 카테고리의 다른 글

[WinAPI] 자료형  (1) 2019.08.07
[Eclipse] 이클립스 설정  (0) 2018.08.03
IaaS, PaaS, SaaS란  (0) 2018.05.23
RESTful API Service Best Practices  (0) 2018.04.20
AngularJS React Vue.js  (0) 2018.02.20