HTTP 메시지는 ASCII로 인코딩된 텍스트 정보로, 서버와 클라이언트 간의 데이터 교환 방식이다. 앞에서 살펴본 것과 같이 메시지는 두 가지 유형으로 나누어진다.
클라이언트는 먼저 다음과 같은 메시지를 통해 서버의 동작을 발생시킨다.
empty line: 헤더와 본문을 구분하며, 요청에 대한 모든 메타 정보가 전송되었음을 알려준다.
body: HTTP 요청이 전송하는 데이터를 담고 있는 부분으로, 전송하는 데이터가 없다면 body 부분은 비어있다.
status line(응답): 응답의 상태를 나타내며 상태 코드와 함께 간단한 텍스트를 보여준다. 상태 코드는 아래에서 다시 정리하였다.
형태: HTTP 버전 / 상태 코드 / 상태 텍스트
예시: HTTP 1.1 / 404 / Not Found.
HTTP headers: 요청과 동일하나 User-Agent 대신 Server 헤더가 사용된다.
empty line: 요청과 동일하다.
body: 요청과 동일하다.
HTTP 메소드는 클라이언트가 서버에 요청을 보낼 때 주어진 리소스에 대해 수행하길 원하는 행동으로, 다음과 같은 종류로 나누어진다.
이름 | 의미 |
---|---|
GET | 서버로부터 정보 조회 |
HEAD | GET과 동일한 응답을 요구하지만, 응답 본문을 포함하지 않으며, 응답코드와 HEAD에만 응답 |
POST | 요청된 자원을 생성(CREATE)하며, 클라이언트에서 서버로 전달하고자 하는 정보를 서버로 보냄 |
PUT | 요청된 자원을 수정(REPLACE)한다 |
DELETE | 요청된 자원을 삭제할 것을 요청(안전성 문제로 대부분의 서버에서 비활성) |
CONNECT | 동적으로 터널 모드를 교환, 프락시 기능을 요청시 사용 |
OPTIONS | 웹서버에서 지원되는 메소드의 종류를 확인할 경우 사용 |
TRACE | 원격지 서버에 루프백 메시지 호출을 위한 테스트용으로 사용 |
PATCH | PUT과 유사하게 요청된 자원을 수정(MODIFY)할 때 사용(일부 교체) |
HTTP 상태 코드는 클라이언트의 요청이 성공적으로 완료되었는지 알려주며, 크게 5개의 그룹으로 나누어진다.
응답대역 | 응답코드 | 의미 |
---|---|---|
정보제공 | 100 | Continue (클라이언트로부터 일부 요청을 받았으며 나머지 정보 계속 요청) |
101 | Switching protocols | |
성공 | 200 | OK(요청이 성공적으로 수행되었음 |
201 | Created (PUT 메소드에 의해 원격지 서버에 파일 생성됨) | |
202 | Accepted(웹 서버가 명령 수신함) | |
203 | Non-authoritative information (클라이언트 요구 중 일부만 전송) | |
204 | No content (요청에 대해 전송할 데이터가 없는 경우) | |
리다이렉션 | 301 | Moved permanently ( 요청한 리소스의 URI가 변경된 경우) |
302 | Not temporarily | |
304 | Not modified (컴퓨터 로컬의 캐시 정보 이용) | |
클라이언트에러 | 400 | Bad Request (사용자의 잘못된 요청을 처리할 수 없음) |
401 | Unauthorized (인증이 필요한 페이지를 요청한 경우) | |
402 | Payment required(예약됨) | |
403 | Forbidden (접근 금지, 관리자 페이지 접근 등 차단) | |
404 | Not found, (요청한 페이지 없음) | |
405 | Method not allowed (허용 되지 않는 http method 사용함) | |
407 | Proxy authentication required (프락시 인증 요구됨) | |
408 | Request timeout (요청 시간 초과) | |
410 | Gone (영구적으로 사용 금지) | |
412 | Precondition failed (전체 조건 실패) | |
414 | Request-URI too long (요청 URL 길이가 긴 경우임) | |
서버에러 | 500 | Internal server error (내부 서버 오류) |
501 | Not implemented (웹 서버가 처리할 수 없음) | |
503 | Service unnailable (서비스 제공 불가) | |
504 | Gateway timeout (게이트웨이 시간 초과) | |
505 | HTTP version not supported (해당 http 버전 지원되지 않음) |
MDN - HTTP 메시지
HTTP 요청-응답 메시지 구조 request-response
자바공작소 - HTTP 응답코드 메소드 정리