编码(Encoding)
主要是为了对实体进行压缩。
常用的编码有:gzip、compress、deflate、identity,其中 identity 表示不执行压缩的编码格式。
分块传输编码(Chunked Transfer Coding)
可以把实体主体分割成多块,让浏览器逐步显示页面。
否则,浏览器只有在加载完所有资源后才一次性把所有资源渲染出来,渲染之前都是空白。
多部分对象集合(Multipart)
允许一份报文传输多种类型的实体。
实体首部字段 Content-Type 中的 boundary 字符串作为分割符。
form-data:表单文件上传时使用。
byteranges:状态码 206,响应报文包含了多个范围的内容时使用。
Content-Type: multipart/form-data; boundary=AaB03x
--AaB03x
Content-Disposition: form-data; name="submit-name"
Larry
--AaB03x
Content-Disposition: form-data; name="files"; filename="file1.txt"
Content-Type: text/plain
... contents of file1.txt ...
--AaB03x--
范围请求(Range Request)
可实现从中断处恢复。
请求首部字段 Range 指定字节范围,响应状态码为 206。
GET /z4d4kWk.jpg HTTP/1.1
Host: i.imgur.com
Range: bytes=0-1023
--------------------------------------------
HTTP/1.1 206 Partial Content
Content-Range: bytes 0-1023/146515
Content-Length: 1024
...
(binary content)
内容协商(Content Negotiation)
通过内容协商返回最合适的内容,例如根据浏览器的默认语言选择返回中文界面还是英文界面。
涉及以下首部字段:Accept、Accept-Charset、Accept-Encoding、Accept-Language、Content-Language。
虚拟主机(Virtual Host)
使一台服务器拥有多个域名。
网友评论