모든 개발자를 위한 HTTP 웹 기본 지식 강의 수강 후, 정리한 글입니다.
message body에 아무런 처리를 하지 않고, Content-Length
만 담아서 그대로 전송하는 것을 말한다.
Content-Length
는 content의 길이를 알 수 있을 때 사용한다.
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 3577
<html>
<body>...</body>
</html>
데이터를 압축해서 전송하는 방식으로, 단순 전송에 비하여 데이터의 크기가 작다. 클라이언트에서 해석할 수 있도록 서버는 압축 방식인 Content-Encoding
을 보내줘야 한다.
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Encoding: gzip
Content-Length: 337
lkj123kljoidfhjdjfknwndiyg1kjfdij485jdslidjfk98djfkl
전송할 데이터의 용량이 클 때, 분할하여 전송한다. 전송되는 청크의 크기는 16진수로 표현된 바이트 수이다.
이때, Content-Length
를 담아 보낼 수 없는 이유는 용량이 커서 길이를 예상할 수 없기 때문이다.
Studyhard
를 5byte씩 나눠 보낸다면, 다음과 같이 보낼 수 있다. 0 \r\n
은 청크의 끝이라는 의미로, 데이터 스트림이 끝났음을 나타낸다.
HTTP/1.1 200 OK
Content-Type: text/plain
Transfer-Encoding: chunked
5
Study
4
hard
0
\r\n
데이터에서 요청받은 범위만 전송한다.
Range
헤더를 지정해 보낸다.Content-Range
헤더로 요청받은 범위와 요청받은 범위의 데이터를 보낸다.GET /event
Range: byte=1001-2000
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Range: bytes 1001-2000 / 2000
gmlgml78rhdqnduftlagl48gkqtlek874haey
유저 에이전트의 이메일 정보
현재 요청된 페이지의이전 웹 페이지 주소
Referer: A
를 포함해서 요청사실 referrer이 올바른 단어이지만, 이미 referer로 사용하고 있는 서버가 많아 referrer로 수정해버리면 오류가 다수 발생하기 때문에 어쩔 수 없이 오타 그대로 사용하고 있다고 한다.
유저 에이전트 애플리케이션 정보
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/
537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36
ORIGIN 서버의 소프트웨어 정보
Server: Apache/2.2.22 (Debian)
server: nginx
메시지가 발생한 날짜와 시간
Date: Tue, 26 Dec 2023 08:23:33 GMT
요청한 호스트 정보(도메인)
GET /search?q=http&hl=ko hTTP/1.1
Host: www.google.com
페이지 리다이렉션
허용 가능한 HTTP 메서드
유저 에이전트가 다음 요청을 하기까지 기다려야 하는 시간
Retry-After: Sun, 31 Dec 2023 23:59:59 GMT (날짜 표기)
Retry-After: 120 (초단위 표기)