Request Message
HTTP Request Message는 공백(blank line)을 제외하고 3가지 부분으로 나누어진다.
HTTP Request Message 구조
- Start Line
- Headers
- Body
Start Line
HTTP Request Message의 시작 라인
HTTP request의 start line 3가지 부분으로 구성
- HTTP method
- Request target
- HTTP version
GET /test.html HTTP/1.1
[HTTP Method] [Request target] [HTTP version]
- HTTP method는 요청의 의도를 담고 있는 GET, POST, PUT, DELETE 등이 있다. GET은 존재하는 자원에 대한 요청, POST는 새로운 자원을 생성, PUT은 존재하는 자원에 대한 변경, DELETE는 존재하는 자원에 대한 삭제와 같은 기능을 가지 있다.
- Request target은 HTTP Request가 전송되는 목표 주소이다.
- HTTP version은 version에 따라 Request 메시지 구조나 데이터가 다를 수 있어서 version을 명시한다.
headers
해당 request에 대한 추가 정보(addtional information)를 담고 있는 부분
예를 들어, request 메세지 body의 총 길이(Content-Length) 등 Key:Value 형태로 구성
headers도 크게 3가지 부분으로 나뉨(general headers, request headers, entity headers)
Host: google.com
Accept: text/html
Accept-Encoding: gzip, deflate
Connection: keep-alive
...
- Host : 요청하려는 서버 호스트이름과 포트번호
- User-agent : 클라이언트 프로그램 정보. 이 정보를 통해 서버는 클라이언트 프로그램(브라우저)에 맞는 최적의 데이터를 보내줄 수 있다.
- Referer : 바로 직전에 머물렀던 웹 링크 주소
- Accept : 클라이언트가 처리 가능한 미디어 타입 종류 나열
- If-Modified-Since : 여기에 쓰여진 시간 이후로 변경된 리소스 취득. 페이지가 수정되었으면 최신 페이지로 교체한다.
- Authorization : 인증 토큰을 서버로 보낼 때 쓰이는 Header
- Origin : 서버로 Post 요청을 보낼 때 요청이 어느 주소에 시작되었는지 나타내는 값. 이 값으로 요청을 보낸 주소와 받는 주소가 다르면 CORS(Cross-Origin Resource Sharing) 에러가 발생한다.
- Cookie : 쿠키 값이 key-value로 표현된다.
body
HTTP Request가 전송하는 데이터를 담고 있는 부분
전송하는 데이터가 없다면 body 부분은 비어있다.
보통 post 요청일 경우, HTML 폼 데이터가 포함되어 있다.
POST /test HTTP/1.1
Accept: application/json
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 78
Content-Type: application/json
Host: google.com
User-Agent: HTTPie/0.9.3
{
"test_id": "zlz_1234567",
"order_id": "6272829"
}
Response Message
HTTP Response Message는 request와 동일하게 공백(blank line)을 제외하고 3가지 부분으로 나누어진다.
- Status Line
- Headers
- Body
status line
HTTP Response의 상태를 간략하게 나타내주는 부분
HTTP Response의 status line 또한 3가지 부분으로 구성
- HTTP version
- Status Code
- Status Text
HTTP/1.1 200 OK
[HTTP version] [Status Code] [Status Text]
headers
Response의 headers와 동일하다.
다만 response에서만 사용되는 header 값들이 있다.
예를 들어, User-Agent 대신에 Server 헤더가 사용된다.
body
Response의 body와 일반적으로 동일하다.
Request와 마찬가지로 모든 response가 body가 있지는 않다.
데이터를 전송할 필요가 없을 경우 body가 비어있게 된다.
'Programming > Web' 카테고리의 다른 글
[Web] google material-icons 적용하기(Outlined, Fill, Rounded, Sharp, Two tone) (0) | 2022.12.09 |
---|---|
[Web] 16진수 체계와 주소체계 (2) | 2022.11.20 |
[Web] Maven과 Gradle 비교 (0) | 2022.11.07 |
[Web] 절대경로/상대경로 (0) | 2022.11.06 |
[Web] 용어 정리(utility), (Software), (Network), (localhost), (Built-in Object), (HTTP) (0) | 2022.11.06 |