클라이언트-서버 데이터 교환 방식 - mdn
요청
: 클라이언트 → 서버응답
: 서버 → 클라이언트요청(Requests)
과 응답(Responses)
은 구조가 비슷하다
start-line
)status line
이라고 부름HTTP headers
)body
)을 설명empty line
)header
)와 본문(body
)를 구분하는 빈 줄body
)첫 줄과 헤더를 묶어서 head
라고 하고 payload
는 body
라고 한다
Requests
)start-line
)GET
, POST
, PUT
, ...)HTTP/1.1
요청 대상 형식은 HTTP method 마다 다를 수 있다
- origin 형식: ?와 쿼리 문자열이 붙는 절대 경로
POST
,GET
,HEAD
,OPTIONS
등과 사용
POST / HTTP 1.1
GET /background.png HTTP/1.0
HEAD /test.html?query=alibaba HTTP/1.1
OPTIONS /anypage.html HTTP/1.0
- absolute 형식: 완전한 URL 형식
프록시에 연결하는 경우 대부분GET
method와 사용
GET http://developer.mozilla.org/en-US/docs/Web/HTTP/Messages HTTP/1.1
- authority 형식: 도메인 이름과 포트 번호로 이루어진 URL의
authority component
HTTP 터널을 구축하는 경우,CONNECT
와 사용
CONNECT developer.mozilla.org:80 HTTP/1.1
- asterisk 형식: 별표(*) 하나로 서버 전체를 표현
OPTIONS
와 함께 쓴다
OPTIONS * HTTP/1.1
HTTP headers
)(이름):(값)
형식헤더의 종류
- General headers
메시지 전체에 적용
body를 통해 전송되는 데이터와는 관련이 없음- Request headers
fetch
를 통해 가져올 리소스나 클라이언트 자체에 대한 자세한 정보를 포함
User-Agent
,Accept-Type
,Accept-Language
,Referer
,If-None
등등- Representation headers
이전에는 Entity headers
body에 담긴 리소스의 정보(컨텐츠 길이, MIME 타입 등)를 포함
body
)모든 요청에 body가 필요한 건 아니다
Single-resource bodies
헤더 두 개(Content-Type과 Content-Length)로 정의된 단일 파일
Multiple-resource bodies
여러 파트로 구성된 본문
각 파트마다 다른 정보가 있다
보통 HTML form
과 관련
추가 공부: MDN - HTTP 요청 메서드
Responses
)status-line
)HTTP/1.1
200
, 302
, 404
, ...)ex) HTTP/1.1 404 Not Found.
HTTP headers
)
- General headers
메시지 전체에 적용
body를 통해 전송되는 데이터와는 관련이 없음- Response headers
응답에 대한 부가적인 정보
Vary
,Accept-Ranges
등, 상태 줄에 넣기에는 부족했던 추가 정보를 제공- Representation headers
이전에는Entity headers
body에 담긴 리소스의 정보(컨텐츠 길이, MIME 타입 등)를 포함
body
)모든 응답에 body가 필요하진 않다
= 201
, 204
, 등...
chunked
로 설정chunk
로 나뉘어 인코딩되어 있음추가 공부: MDN: HTTP 상태 코드
= 상태를 가지지 않는다
= 클라이언트와 서버가 통신을 주고 받는 과정에서,
HTTP가 클라이언트나 서버의 상태를 확인하지 않는다
나중에 자세히... (Section 3)