HTTP 통신 - Request와 Response에 대해서

1. Request

HTTP통신에서 Request는 아래와 같이 4개의 영역으로 나누어 볼 수 있다.

 

1. Request Line : HTTP Method, 요청 대상 URL, 사용되는 HTTP 프로토콜 버전

 

 

2. Request Header : Host(요청이 전송되는 서버의 도메인 이름), User-Agent(클라이언트에 대한 정보), 

                                  Accept(클라이언트가 받을 수 있는 데이터타입), Content-Type(요청 Body의 데이터타입)

 

 Content-type은 HTTP 헤더의 일부분으로서 요청이나 응답에 포함된 데이터의 유형을 명시하는 항목이다.

이를 명확하게 명시해주어야만이 클라이언트와 서버가 올바르게 데이터를 주고받을 수 있다.

 

 

3. 공백라인 : 헤더와 Body사이에 존재하는 공백으로 헤더와 Body를 구분하는 구분자 역할을 한다.

                    이러한 구분자가 존재해야지 서버와 클라이언트가 메시지를 올바르게 파싱한다.

 

POST /example.html HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded 
Content-Length: 13

name=John+Doe

위와 같은 요청에서 볼 수 있듯이 만약 공백라인이 없다면 서버와 클라이언트는 Body내용을 Header로 착각하여 해석할 수 있다.따라서 위와 같이 공백라인을 통해서 Header와  Body가 구분짓는 것이다.

 

 

4. Body  : 요청과 함께 전달되는 데이터로서 필수적인 것은 아니다.  ( ex : Get method )

 

 

2. Response

1. Status Line : 상태 라인은 HTTP 버전, 상태 코드, 그리고 상태 메시지를 포함한다.

    상태 코드는 3자리 숫자로 이루어져 있으며, 서버가 요청을 처리한 결과를 명시한다.

   예를 들어, '200'은 성공을 나타내며 '404'는 요청한 리소스를 찾을 수 없음을 의미한다.

 


2. 헤더(Headers): 일반적으로 사용되는 헤더에는 Content-Type(응답 본문의 데이터 유형),

  Content-Length(응답 본문의 길이), Set-Cookie(Cookie 설정), Cache-Control(캐싱 동작 제어) 등이 존재한다.

 


3. 공백 라인: Request와 마찬가지로   header와 body를 구분짓는 공백라인이 존재한다.

 

 

4. 본문(Body) : Response와 함께 전송되는 데이터를 의미하며 이 역시 request와 마찬가지로 필수적이지 않다.

예를 들어, '204 No Content'와 같은 일부 상태 코드에서는 Response Body 내용이 없다.