图解 HTTP

其他应用

2018-03-20  本文已影响7人  一块大番薯

编码(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)

使一台服务器拥有多个域名。

上一篇下一篇

猜你喜欢

热点阅读