1999년 RFC2616 -> 2014년 RFC7230~7235
엔티티 ( 헤더 + 본문) -> 표현 ( 데이터 + 메타데이터)서버가 응답 메시지를 보냈을 때를 예시로 들어보자
HTTP/1.1 200 OK ---표현 헤더 Content-Type Content-Length ---표현 데이터 <html> <body>...</body> </html>
표현 헤더의 경우 전송(클라이언트)과 응답(서버) 둘다 사용한다
클라이언트가 선호하는 표현 요청으로, Content-Negotiation을 의미
협상 적용 전
GET /event
->
Content-Language: en
hello
협상 적용 후
GET / event
Accept-Language: ko
->
Content-Language: ko
안녕하세요
만약, 원하는 요청이 서버에서 지원하지 않을 경우 디폴트 값으로 서버는 응답
서버에서 지원하지 않을 경우를 대비해 우선순위를 줄 수 있음
ex) Accept-Language: ko-KR, ko;q=0.9, en-US;1=0.8
Language뿐만 아니라, Type에도 적용이 가능하다
길이(Content-Length)를 알 수 있을때만 사용
HTTP/1.1 200 OK
Content-Type : ~
Content-Length : ~~
HTTP/1.1 200 OK
Content-Type : ~
Content-Encoding : gzip
Content-Length : ~~
Content-Type : ~
Transfer-Encoding : chunked
※ Content-Length 가 필요하지 않음
표현 데이터의 형식을
길이
내용
길이
내용
위와 같은 형식으로 보내는 방법
응답 중에 오류로 중간에 끊기면 처음부터 보내야 하는 상황이 발생하므로
범위로 끊어서 보내는 방법
HTTP/1.1 200 OK
Content-Type : ~
Content-Rage: bytes a~b/b~c