학습 목표
- HTTP의 동작 방식을 이해할 수 있다.
- HTTP Messages의 구조를 설명할 수 있다.
- HTTP Requests와 Responses를 구분할 수 있다.
- HTTP의 응답 메시지를 찾아볼 수 있다.
요청과 응답의 구조는 유사함
이 중 start line과 HTTP headers를 묶어 요청이나 응답의 헤드(head)라고 하고, payload는 body라고 함
말 그대로 상태를 가지지 않는다는 뜻
HTTP로 클라이언트와 서버가 통신을 주고받는 과정에서, HTTP가 클라이언트나 서버의 상태를 확인하지 않음
예를 들어, 사용자는 쇼핑몰에 로그인하거나 상품을 클릭해서 상세 화면으로 이동하고, 상품을 카트에 담거나 로그아웃할 수도 있는데,
클라이언트에서 발생한 이런 모든 상태를 HTTP 통신이 추적하지 않음
만약 쇼핑몰에서 카트에 담기 버튼을 눌렀을 때, 카트에 담긴 상품 정보(상태)를 저장해둬야 하지만, HTTP는 통신 규약일 뿐이므로, 상태를 저장하지 않음
따라서 필요에 따라 다른 방법(쿠키-세션, API 등)을 통해 상태를 확인할 수 있음
Start line에는 세 가지 요소가 있음
수행할 작업(GET, PUT, POST 등)이나 방식(HEAD or OPTIONS)을 설명하는 HTTP method를 나타냄
요청 대상(일반적으로 URL이나 URI) 또는 프로토콜, 포트, 도메인의 절대 경로는 요청 컨텍스트에 작성됨
POST / HTTP 1.1
GET /background.png HTTP/1.0
HEAD /test.html?query=alibaba HTTP/1.1
OPTIONS /anypage.html HTTP/1.0
GET http://developer.mozilla.org/en-US/docs/Web/HTTP/Messages HTTP/1.1
CONNECT developer.mozilla.org:80 HTTP/1.1
*
) 하나로 서버 전체를 표현OPTIONS * HTTP/1.1
HTTP 버전에 따라 HTTP message의 구조가 달라짐
요청의 Headers는 기본 구조를 따르며, 헤더 이름(대소문자 구분이 없는 문자열), 콜론( : ), 값을 입력
값은 헤더에 따라 다릅니다. 여러 종류의 헤더가 있고, 다음과 같이 그룹을 나눌 수 있음
General headers
Request headers
Representation headers
HTTP Responses는 서버가 클라이언트에게 보내는 메시지로, 응답의 첫 줄을 Status line이라고 부름
포함하는 정보
Status line의 한 예시로 HTTP/1.1 404 Not Found
가 있음
응답에 들어가는 HTTP headers는 요청 헤더와 동일한 구조를 가짐
대소문자 구분 없는 문자열, 콜론(:), 값을 입력
값은 헤더에 따라 다르며, 요청의 헤더와 마찬가지로 몇 그룹으로 나눌 수 있음