Web

HTTP 응답 코드와 Request Method

freestrokes 2019. 9. 1. 01:03
반응형

HTTP 응답 코드와 Request Method


Web에서 사용되는 HTTP의 응답 코드와 Request Method에 대해서 알아보겠습니다.


1. HTTP 응답 코드 (Response Code)


클라이언트가 서버에 요청(request)을 하면 서버는 응답(response)을 보내주는데 이 때 함께 보내주는 코드를 응답 코드라고 합니다. 각 코드는 100번대 단위로 구분되어 있으며 첫번째 자리를 Response Class Code라고 합니다. 이것은 응답의 종류를 구분하기위해 사용됩니다.


1.1 Response Class Code


응답 코드의 첫번째 자리인 Response Class Code의 종류는 다음과 같습니다.


Response Class Code

구분

설명

1

정보

요청을 받고 처리중인 상태

2

성공

요청을 정상적으로 처리

3

리다이렉션

요청 완료를 위해 추가 조치가 필요

4

클아이언트 오류

클라이언트 요청을 처리할 수 없음

5

 서버 오류

 서버에서 요청을 처리할 수 없음


1.2 1xx 응답 코드


1xx 응답 코드는 정보 응답 코드입니다. 요청을 받은 상태이며 작업 진행중인 상태입니다. 서버가 클라이언트에게 보내지 않는 응답 코드이지만 101 코드의 경우 web socket 등에서 쓰이는 특징이 있습니다.


Code

상태

설명

100

continue

서버가 요청의 첫 부분을 받고 나머지를 기다리는 상태.

서버가 요청자의 나머지 요청을 기다리는 상태.

101

switching protocol

요청자가 서버에 프로토콜 전환을 요청한 상태

102

processing

서버가 요청을 모두 수신한 상태


1.3 2xx 응답 코드


2xx 응답 코드는 성공 응답 코드입니다. 서버는 클라이언트가 요청한 작업을 성공적으로 받아들인 상태입니다.


Code

상태

설명

200

ok

서버가 요청을 정상적으로 처리한 상태.

가장 일반적으로 볼 수 있는 http 상태

201

created

서버가 요청을 정상적으로 처리 했으며, 새로운 리소스를 생성한 상태

202

accepted

서버가 요청을 받아들였지만 처리되지 않은 상태

203

non-authritative information

서버가 요청을 정상적으로 처리했지만, 

다른 소스에서 수신된 정보를 제공하는 상태

204

no content

서버가 요청을 정상적으로 처리했지만,

콘텐츠를 제공하지 않음

body가 포함되지 않으며 클라이언트에게 정보를 보내지 않을 때 사용

205

reset content

서버가 요청을 정상적으로 처리했지만,

콘텐츠를 표시하지 않음

서버가 클라이언트에게 요청된 페이지를 리셋할 것을 알려줌

206

partial content

서버가 요청을 정상적으로 처리했지만,

콘텐츠의 일부분만을 제공

207

multi-status

여러 리소스가 여러 응답 코드에 해당할 경우 

적절한 상황에 맞는 정보를 전달

208

already reported

동일한 컬렉션으로 바인딩된 내부 멤버의 중복 제거를 위해 사용 

226

IM used

서버가 요청에 대한 처리를 모두 완료하였고,

응답에 대한 인스턴스가 현재 인스턴스에 적용된 상태


1.4 3xx 응답 코드


3xx 응답 코드는 리다이렉션 응답 코드입니다. 서버가 요청을 완료하기 위해서는 리다이렉션이 이루어져야하는 상태입니다. 헤더의 location에 실제 이동할 URL이 작성되어 반환됩니다.


Code

상태

설명

300

multiple choice

서버의 요청에 따라 여러 조치를 선택 가능

서버가 클라이언트에 따라 수행할 작업을 선택하거나,

요청자가 선택할 수 있는 목록을 제공

301

moved permanently

요청한 리소스의 URI가 영구적으로 변경된 상태

영구적으로 컨텐츠가 이동된 상태

302

found

요청한 리소스의 URI가 일시적으로 변경된 상태

303

see other

요청에 대한 리소스가 다른 URI에 있기 때문에,

GET 메서드를 사용하여 얻어와야하는 상태

리다이렉션 위치를 GET 메서드를 사용하여 얻어와야함

304

not modified

요청한 리소스가 마지막 요청 이후 변경된 것이 없는 상태

서버는 클라이언트에게 기존의 로컬 캐시 리소스를 사용할 것을 알려줌

305

use proxy

프록시를 사용해야만 요청한 페이지에 접근 가능함을 알려줌

306

unused

사용되지 않은 응답 코드이며 추후 사용을 위해 예약됨

 307

temporary redirect

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

308

permanent redirect

영구적으로 페이지를 리다이렉트함


1.5 4xx 응답 코드


4xx 응답 코드는 클라이언트 오류인 경우 사용되는 응답 코드입니다.


Code

상태 

설명 

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

 request timeout

요청 시간이 초과되었을 경우 

409

conflict

서버가 요청 수행중에 충돌이 발생한 경우 

410

 gone

404 처럼 리소스가 없는 경우이지만,

410은 리소스가 완전히 사라진 경우 발생

411

length required 

서버가 요구하는 유효한 content-length 헤더 필드가 필요한 경우 

412

 precondition failed

요청이 사전조건을 만족하지 않은 경우 

413

requested entity too large

 요청의 본문 길이가 너무 긴 경우

414

 requested url too long

요청의 url이 너무 긴 경우 

415

 unsupported media type

요청의 미디어 포맷을 서버에서 지원하지 않는 경우 

416

requested range not satisfiable 

요청 헤더의 range 범위가 잘못 지정된 경우 

417

 expectation failed

요청 헤더의 expect 필드가 적절하지 않은 경우 

418

I'm a teapot

HTCPCP

https://tools.ietf.org/html/rfc2324

https://www.google.com/teapot 

429

too many requests 

일정 시간동안 너무 많은 요청이 발생했을 때 이를 거부하기 위해 사용 

451

unavailable for legal reasons

국가 검열등의 이유로 차단되었을 경우 


1.6 5xx 응답 코드


5xx 응답 코드는 정상적인 요청에 대해 서버 오류가 발생한 경우 사용되는 응답 코드입니다.


Code

상태

설명

500

internal server error

서버에서 오류가 발생하여 작업을 수행할 수 없는 경우

501

not implemented

요청 메서드가 서버에서 지원되지 않아 처리할 수 없는 경우

502

bad gateway

게이트웨이가 잘못 되었을 경우

503

service temporarily unavailable

서버를 일시적으로 사용할 수 없는 경우

일반적으로 유지보수중인 경우

504

gateway timeout

게이트웨이 시간초과 상태

505

http version not supported

http 버전을 서버에서 처리할 수 없는 경우

509

apache bw/limited extension

대역폭 제한을 초과한 경우

520

unknown error

알 수 없는 오류


2. HTTP 요청 메서드 (Request Method)


HTTP 요청 메서드는 주어진 리소스에 필요한 액션이 수행되게 하는 요청 메소드의 집합을 정의합니다. 클아이언트가 서버에게 전달한 요청에 포함되며 서버는 이에 따라 주어진 메서드에 해당하는 역할을 수행합니다.


HTTP 요청 메서드의 종류는 다음과 같습니다.


Request Method

전송 형태

설명

GET

GET [request-uri]?[query-string] HTTP/1.1

Host:[Hostname] 또는 [IP]

요청받은 URI의 정보를 검색하여 응답

HEAD

HEAD [request-uri] HTTP/1.1

Host:[Hostname] 또는 [IP]

GET 메서드와 동일하지만 response에 body가 없고

응답코드와 head만 반환 

 POST

POST [request-uri] HTTP/1.1

Host:[Hostname] 또는 [IP]

Content-Lenght:[Length in Bytes]

Content-Type:[Content Type]

[Data]  

요청된 리소스를 생성(Create)함. 

 PUT

PUT [request-uri] HTTP/1.1

Host:[Hostname] 또는 [IP]

Content-Lenght:[Length in Bytes]

Content-Type:[Content Type]

[Data]

요청된 리소스를 수정(Update)함.

리소스 전체를 수정함.

PATCH

PATCH [request-uri] HTTP/1.1

Host:[Hostname] 또는 [IP]

Content-Lenght:[Length in Bytes]

Content-Type:[Content Type]

[Data]

PUT 메서드처럼 요청된 리소스를 수정하지만,

PATCH 메서드는 해당 리소스의 일부만 수정함.

DELETE

DELETE [request-uri] HTTP/1.1

Host:[Hostname] 또는 [IP]

요청된 리소스를 삭제(Delete)함.

CONNECT

CONNECT [request-uri] HTTP/1.1

Host:[Hostname] 또는 [IP]

서버에 프록시 기능을 요청할 경우 사용.

TRACE

TRACE [request-uri] HTTP/ 1.1

Host: [Hostname] 또는 [IP]

원격지 서버에 loopback 메시지를 요청하기 위해 사용

OPTIONS

OPTIONS [request-uri] HTTP/ 1.1

Host: [Hostname] 또는 [IP]

서버에서 지원되는 메서드 종류를 확인하기 위해 사용


이상으로 HTTP 응답 코드와 Method에 대해 알아봤습니다.


※ 참고 문헌



반응형