web HTTP 요청-응답 메시지 구조
HTTP 요청 메시지 구조
- 요청 메시지는 세 부분으로 구성되어 있다
- **1) Start Line (요청 내용) **
- HTTP 메소드 / Request target / HTTP version
- 2) Header
- 3) Body
- **1) Start Line (요청 내용) **
-
요청 내용과 헤더 필더는 마지막에 빈줄로 끝나야 한다 (
<CR> <LF>
외에 다른 whitespace가 있어서는 안됨!) - HTTPie 로 터미널에 HTTP 요청을 보냄
1) Start Line 요청 내용
-
HTTP 메소드 / Request target / HTTP version
- HTTP 메소드 : 요청의 의도를 담고 있음 ex) GET, POST
- Request target : HTTP 요청이 전송되는 목표 주소
- HTTP version : 버전에 따라 요청 메시지 구조나 데이터가 다를 수 있어서, version을 명시
2) Header 헤더
-
HTTP 요청 그 자체에 대한 정보를 담고 있다
-
파이썬의 딕셔너리 자료형처럼 key : value 로 이루어져 있다
-
헤더 정보
- Host : 요청이 전송되는 target의 호스트 URL 주소
- User-Agent : 요청을 보내는 클라이언트의 정보 ex 웹 브라우저의 정보
- Accept
- 해당 요청이 받을 수 있는 응답 body 데이터 타입의 정보
- 모든 타입을 허용하는 경우
*/*
로 지정 - MIME type : Multipurpost Internet Mail Extensions (ex. application/json)
- Connection
- 해당 요청이 끝난 후에 클라이언트와 서버간의 연결을 계속 유지할 것인지 끊을 것인지 알려주는 헤더
- HTTP 요청 때마다 네트워크 연결을 새로 만드는 건 번거롭기 때문에 요청이 계속되는 한 처음 연결을 재사용하는 것이 바람직
- keep-alive : 네트워크 연결을 유지해라
- close : 더이상 요청을 보내지 않으니 연결을 닫아라
- Content-Type
- HTTP 요청이 보내는 메시지 body 타입을 알려줌
- MIME type
- Content-Length : 요청이 보내는 메시지 body의 총 사이즈 정보
3) Body
- HTTP 요청이 전송하는 데이터를 담고 있는 부분
- 전송하는 데이터가 없다면 body 부분은 비어있다 (위 사진의 경우, Body가 없음)
HTTP 응답 메시지 구조
- 응답 메시지 또한 세 부분으로 구성되어 있다
- **1) Status Line **
- HTTP version / Status Code / Status Text
- 2) Header
- 3) Body
- **1) Status Line **
1) Status Line
- HTTP version / Status Code / Status Text
- HTTP version
- Status Code
- 응답 상태를 나타내는 코드 (ex.200 요청 정상 처리)
- Status Text
- 응답 상태를 간략하게 글로 설명해줌 (ex. OK)
2) Header
- HTTP 요청 메시지의 헤더와 동일
- 단 User-Agent 헤더 대신 Server 헤더가 사용됨
3) Body
- HTTP 요청 메시지의 body와 동일
- 전송하는 데이터가 없으면 비어 있음
Comments