http进阶篇

MIME数据类型

1. text:即文本格式的可读数据,我们最熟悉的应该就是text/html了,表示超文本文档,此外
还有纯文本text/plain、样式表text/css等。
2. image:即图像文件,有image/gif、image/jpeg、image/png等。
3. audio/video:音频和视频数据,例如audio/mpeg、video/mp4等。
4. application:数据格式不固定,可能是文本也可能是二进制,必须由上层应用程序来解释。
常见的有application/json,application/javascript、application/pdf等,另外,如果实在是不
知道数据是什么类型,像刚才说的“黑盒”,就会是application/octet-stream,即不透明的二
进制数据。

编码格式 Encoding type

1. gzip:GNU zip压缩格式,也是互联网上最流行的压缩格式;
2. deflate:zlib(deflate)压缩格式,流行程度仅次于gzip;
3. br:一种专门为HTTP优化的新压缩算法(Brotli)。

 

 

 表示浏览器最希望使用的是HTML文件,权重是1,其次是XML文件,权重是0.9,最后是任意数据类型,权重是0.8。服务器收到请求头后,就会计算权重,再根据自己的实际情况优先输出HTML或者XML。

传输大文件

gzip等压缩算法通常只对文本文件有较好的压缩率,而图片、音频视频等多媒体数据本身就已经是高度压缩的,再用gzip处理也不会变小

分块传输

Transfer-Encoding: chunked”和“Content-Length”这两个字段是互斥的,也就是说响应报文里这两个字段不能同时出现,一个响应报文的传输要么是长度已知,要么是长度未知

从GitHub上下载源码包,GitHub要实时压缩实时发送,而不是一下子压缩好再发送,这样body的长度一开始就是未知的。所以就要用分块编码,压缩一部分,就发一部分,这部分的长度是已知的,但总长度只有压缩完才能知道。chunked编码用在“流式”收发数据的时候,通常数据是即时生成的,也就是动态数据

范围请求

不是Web服务器必备的功能,可以实现也可以不实现,所以服务器必须在响应头里使用字段“Accept-Ranges: bytes”明确告知客户端:“我是支持范围请求的”。

头Range是HTTP范围请求的专用字段,格式是“bytes=x-y”,其中的x和y是以字节为单位的数据范围。

应用:断点下载

多段数据

这种情况需要使用一种特殊的MIME类型:“multipart/byteranges”,表示报文的body是由多段字节序列组成的,并且还要用一个参数“boundary=xxx”给出段之间的分隔标记。

长连接 Connection: keep-alive

TCP连接长时间不关闭,服务器必须在内存里保存它的状态,这就占用了服务器的资源。如果有大量的空闲长连接只连不发,就会很快耗尽服务器的资源,导致服务器无法为真正有需要的用户提供服务。在客户端,可以在请求头里加上“Connection: close”字段,告诉服务器:“这次通信后就关闭连接”。服务器看到这个字段,就知道客户端要主动关闭连接,于是在响应报文里也加上这个字段,发送之后就调用Socket API关闭TCP连接。

服务器端通常不会主动关闭连接,但也可以使用一些策略,拿nginx举例

keepalive_timeout 设置长连接的超时时间

“keepalive_requests 设置长连接上可发送的最大请求次数

队列阻塞 先进先出

 并发连接:是同时对一个域名发起多个长连接,用数量来解决质量的问题。

浏览器限制连接次数,那就域名分片,就多开几个域名,比如shard1.chrono.com、shard2.chrono.com,而这些域名都指向同一台服务器www.chrono.com

Cookie : 生存周期 Expires和Max-Age

在JS脚本里可以用document.cookie来读写Cookie数据,属性“HttpOnly”会告诉浏览器,此Cookie只能通过浏览器HTTP协议传输,禁止其他方式访问

SameSite”可以防范“跨站请求伪造”(XSRF)攻击,设置成“SameSite=Strict”可以严格限定Cookie不能随着跳转链接跨站发送

还有一个属性叫“Secure”,表示这个Cookie仅能用HTTPS协议加密传输,明文的HTTP协议会禁止发送。明文的HTTP协议会禁止发送。但Cookie本身不是加密的,浏览器里还是以明文的形式存在。

猜你喜欢

转载自www.cnblogs.com/autointerface/p/11941745.html