博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《http权威指南》阅读笔记(十)
阅读量:6542 次
发布时间:2019-06-24

本文共 1119 字,大约阅读时间需要 3 分钟。

在http请求过程中,可以对实体内容进行编码

通过content-encoding头部说明,一般使用 gzip,conpress,deflate,identity

默认是identity,不对实体进行编码,使用最广泛的是gzip,主要是用来对内容进行压缩,减少网络传输的数据

头部使用accept-encoding来说明客户端可以那些编码,可以使用指定多个,说明优先级,编码之间用;隔开

 

content-type,实体MIME类型 text/html 一般有主类型和子类型,这个可以在MIME中心进行注册

content-length 这个比较重要,实体的长度,主要是在http1.1中作为数据发送完成的标示

在http1.0中,如果没有持久化连接,那么服务器端关闭socket连接就说明内容发送完成

在http1.1中,默认是持久化连接,客户端和服务器端根据content-length来表明数据发送完成,可以发送下一次请求,如果content-length和实际的length不匹配,会带来严重的问题,在http1.1中,如果socket异常关闭了,可以检测内容发送是否完整

考虑到一种情况,由于需要完全生成好实体内容,才可以计算出来content-length头部,对于动态内容,很难进行计算,一般都是解析一部分,发送一部分。这样的话,就必须约定一个实体内容结束标记,取代content-length标签

可以用transfer-encoding,用在服务器响应报文里面,目前只有分块chunked 编码

chunked编码基本规则:

报文长度

报文内容

CRLF

报文长度

报文内容

CRLF

0

客户端检测字节的长度,说明报文发送完成,客户端可以发起下一次请求

 

multipart/form-data 类型的报文,这个是类似邮件传送的报文一样,可以传送多个部分,通过boundray标记多个部分

 

客户端可以进行范围请求

通过头部Range:4000-10000

说明请求服务器的实体内容从4000字节开始,到第10000字节结束,应该是左闭右开

这个在P2P网络用的比较多,想一些多线程下载软件就是这么干的,第一次通过head请求,服务器响应内容长度

客户端开启N个线程,用content-length/N进行拆分,进行部分请求,然后在把下载的内容进行组合,终于知道这个原理了

 

还有增量请求,通过条件请求来进行

条件请求头部:

If-Modified-Since,If-Unmodified-Since,If-Match,If-Not-Match

一般情况下,使用If-Not-Match和Etag请求,增量请求有一般几种算法。

 

转载地址:http://ztodo.baihongyu.com/

你可能感兴趣的文章
php进一法取整、四舍五入取整、忽略小数等的取整数方法大全
查看>>
Hibernate的拦截器和监听器
查看>>
游戏中学习Bash技能
查看>>
ubuntu 12.04系统托盘不显示ibus输入法图标的解决方法
查看>>
WSDP
查看>>
Memory Management
查看>>
The Packaging Process in Yocto/OE
查看>>
JQUERY 对 表格中的数据重排序
查看>>
程序员常用借口指南
查看>>
关于PXE网络安装linux系统中碰到的个别问题
查看>>
awk 常用方法
查看>>
Android网络框架实现之【Retrofit+RxJava】
查看>>
Android文件的加密与解密
查看>>
SOAP webserivce 和 RESTful webservice 对比及区别
查看>>
【原】记录一句话
查看>>
Android标题栏,状态栏
查看>>
Windows下安装Memcached for PHP
查看>>
hdu 1040 As Easy As A+B
查看>>
java笔记:SpringSecurity应用(二)
查看>>
php记录代码执行时间
查看>>