HTTP 요청 구조 (HTTP Request Structure)
- 크게 시작 줄 (Start line), 헤더 (Headers), 바디 (Body) 라는 3가지 파트로 분류된다.
시작 줄 (Start line)
시작 줄 (Start line) 에는 보통 3가지 정보를 포함한다.
- HTTP Method
GET
,PUT
,POST
,HEAD
,OPTIONS
등의 메서드가 존재한다.- 대략적으로 어떠한 액션이 수행될지에 대해 말해준다.
- URL 혹은 프로토콜, 포트, 도메인 절대 경로
- 절대 경로 (absolute path): 많은 HTTP 메서드에 가장 많이 쓰이는 형식이다.
?
를 포함한 쿼리 스트링이 뒤에 붙을 수 있다.POST / HTTP 1.1
GET /background.png HTTP/1.0
HEAD /test.html?query=alibaba HTTP/1.1
OPTIONS /anypage.html HTTP/1.0
- 완전한 경로 (complete path): 주로
GET
메서드로 프록시에 연결할 때 많이 사용된다. absolute form 이라고도 알려져 있다.GET http://developer.mozilla.org/en-US/docs/Web/HTTP/Messages HTTP/1.1
- URL 권한 컴포넌트 (the authority component of a URL): 보통 도메인 이름과 포트로 구성되어
CONNECT
메서드와 함께 HTTP 터널을 설정한다.CONNECT developer.mozilla.org:80 HTTP/1.1
- 아스터리스크 형태 (asterisk form): 간단한 아스터리스크(
*
)와OPTIONS
가 함께 사용된다.OPTIONS * HTTP/1.1
- 절대 경로 (absolute path): 많은 HTTP 메서드에 가장 많이 쓰이는 형식이다.
- HTTP 버전 정보
- 메시지의 남은 구조를 결정하기 때문에 응답 메세지에서 써야 할 HTTP 버전을 알려주는 역할을 한다.
GET /replay/2023/nw1200/article/6474331_36170.html HTTP/1.1
...
HTTP 통신 시작 줄의 예시 텍스트
헤더 (Headers)
- HTTP Headers 는 대소문자를 구분 않는 문자열을 키로 갖고
:
뒤에 값이 온다. - 모든 헤더는 한 줄로 표현되고 때때로 글자수가 상당히 길어질 수 있다.
- 여러 종류의 헤더가 요청에 올 수 있으며, 그룹 지어서 구분될 수 있다.
- 일반 헤더 (General Headers): 메세지 전체에 적용된다. Via 와 같은 헤더가 있다.
- 요청 헤더 (Request Headers): User-Agent, Accept-Language, Accept, Referer 와 같이 요청에 대한 추가정보를 제공할 수 있다.
- 표현 헤더 (Representation Headers): Content-Type 과 같이 메세지 데이터에 어떠한 내용이 들어있는지 기술한다. 메세지가 바디를 가질 때만 존재한다.
바디 (Body)
- 요청 (Request) 의 마지막 부분이다.
- 모든 요청이 바디를 갖는 것은 아니다.
GET
,HEAD
,DELETE
,OPTIONS
메서드 요청은 바디를 갖지 않는다.
- 주로
POST
메서드로 전달되는 요청이 바디와 함께 전달되어 서버의 데이터를 업데이트 시키는 등의 행위를 한다. - 바디는 주로 2개의 카테고리로 분류된다.
- 단일 리소스 바디는 단 하나의 파일을 포함한다. Content-Type 과 Content-Length 에 의해 정의된다.
- 다중 리소스 바디는 여러 파트의 바디를 포함한다. 각각 정보의 다른 부분을 가지고 있다. 이 형태는 보통 multipart/form-data 를 통해 들어온다.
Content-Length
에서 한줄 줄넘김된 아래에 Body 가 위치한 것을 볼 수 있다. 위의 예시 Body 에는 JSON 데이터가 들어있다.
반응형
'네트워크 > HTTP' 카테고리의 다른 글
HTTP/1 에서 HTTP/2 로 가면서 얻는 개선점들 (HTTP1 에서 HTTP2로) (0) | 2023.04.16 |
---|---|
HTTP 응답 메세지의 구조 (0) | 2023.04.15 |
HTTP Content-Type 헤더란? (0) | 2023.04.14 |
HTTP MIME type 이란? (0) | 2023.04.14 |
HTTP 쿠키 (HTTP Cookie) 의 생성 옵션 (0) | 2023.01.27 |