http主要由请求和响应两部分组成
通用首部:请求和响应都会使用的首部
1 .cache-control
2 .data:创建报文的时间
3 .pragma:1.0的缓存指令
4 .upgrade:升级为其他协议
5 .via:代理服务器的相关信息
6 .warning:错误统计
7 .connection连接的管理
1 .close:发送者使用这个选项指示这次连接在响应结束之后就会断开
2 .keep-alive:之后的链接复用这个请求.网络连接是持久的.不会关闭,对同一个服务器的请求可以继续在这个连接上完成
8 .transfer_Encoding:报文主体的传输编码方式
请求首部
1 .客户端请求结构:请求行,请求头部,空行和请求数据
2 .referer:允许客户端指定请求uri的原地址,可以允许服务器生成回退列表
3 .accept:用户可以优先处理的媒体类型以及媒体类型的优先级。内容协商机制,客户端和服务器器端就响应的资源进行交涉,然后后提供给客户端最为合适的资源。
1.text/html,image/jpeg,video/mpeg,application/zip应用程序的二进制文件
2.若想给显示的媒体类型添加优先级,使用q=权重值,分号进行分割。
4 .accept-charset:通知服务器用户代理支持的字符集以及字符集的优先顺序
5 .Acept-Encoding:用户支持的内容编码以及内容编码的优先顺序
1.Gzip/compress
6 .Authorization:告诉服务器,用户代理的认证信息。通过服务器认证的用户代理会在接收到401状态码之后,把首部字段加入到请求中。
7 .except:期望出现某些特定的行为。如果服务器无法理解客户端的期望做出回应而发生错误时,返回417。
8 .form:告知服务器使用用户代理的电子邮件地址。
9 .host:虚拟主机运行在一个IP之上,所以用首部字段host来区分。首部字段host和单台服务器分配多个域名的虚拟主机工作机制很有密切的关联。
10 .if-match/if-modified-since/if-none-match/if-range(他的值和etag或者更新的日期匹配一致,就会作为范围请求处理):条件请求,服务器接受到请求,只有判断为真的时候,才会执行请求。
11 .Etag:为了解决last-modified无法解决的一些问题
1.一些文件虽然会周期性的改变,但是知识修改时间的改变,这个时候我们并不希望客户端认为这个文件被修改了,重复获取。
2.某些文件修改的太过频繁,比如在秒一下的时间修改,last-modified就感知不到。所以无法判断更加精细的修改记录。
3.某些服务器不能获得精确的文件最后修改时间,所以需要Etag,仅仅是一个和文件相关的标记
12 .max-forwards:服务器转发的次数,当变成0的时候就不在转发了,直接返回响应。
13 .proxy-authorization:告知服务器认证需要的信息
14 .referer:告知服务器请求的原始资源的url.
15 .te:告知服务器客户端能处理响应的传输编码方式以及相对优先级。他和首部accept-encoding类似,但是用于传输编码。
16 .
响应首部
1 .accept-range:告诉客户端服务器是否能处理范围请求。none/bytes(可以处理)
2 .age:告知客户端,源服务器在多久之前创建了响应,单位是秒
3 .Etag:告诉客户端实体标识
1.强Etag:无论发生多么微笑的变化都会记录这个值。
2.弱Etag:只用于提示资源是否相同,只有资源发生了根本变化才会改变Etag值。这是会在字段最开始的地方加上W/
4 .proxy-authenticate:把代理服务器所要求的认证信息发送给客户端。
5 .reter-after:告知客户端多久之后在来访问,配合503使用,字段可以使具体的日期信息。
6 .server:服务器上安装的http服务器应用信息。
7 .vary:从代理服务器接收到源服务器返回包含Vary指定箱的响应后,使用这个标头来解决代理服务器的缓存校验机制。
实体首部
1 .针对请求和响应报文的实体部分使用的首部。补充了资源内容更新时间和实体有关的信息。
2 .allow:通知客户端能够支持的请求资源方法,当服务器接受不到方法的时候,返回405
3 .content-encoding:告知客户端服务器对实体部分选用的内容编码方式。(gzip,compress,deflate,idefentity)
4 .content-language:主体使用的自然语言。
5 .content-length:实体主题的大小,单位是字节
6 .content-location:主体资源的对应的url。访问百度,返回的确实阿里的资源。这个url会写出来。
7 .content-md5:检查报文主体在传输的时候是否是完整的,已确认传输到达。
8 .content-range:针对范围请求,返回响应时使用的首部字段,能告知客户端作为响应实体的哪个部分符合范围请求
9 .expires:将资源的失效日期告诉客户端。缓存服务器会在接收到含有首部字段Expires的响应之后,会以缓存来应答请求,当超过expires时间之后,缓存服务器在请求发送过来时,会向源服务器请求资源。
10 .Via:追踪客户端与服务器之间的请求和响应报文的传输路径,报文在经过代理和网关时,会现在首部字段Via附加该服务器的信息,然后在进行转发。首部字段不仅可以用于追踪报文的转发,还可以避免回环请求的发生。所以必须在经过代理时附加该首部字段内容。
11 .
其他首部:http首部字段是可以扩展的,所以在服务器和浏览器的应用中,总是会出现非标准的首部字段,在http等多种协议中,通过给非标准参数加上前缀X-,来区别标准参数,并使那些非标准的参数作为扩展变为可能。
1.X-frame-options:用于控制网站内容在其他web网站的frame标签内显示的问题,防止点击劫持攻击 deny:拒绝。sameorigin:仅允许同域名下的页面匹配许可
2.x-xss-protection:用于控制流;拉你去的xss防护机制的开关。0:将xss设置为无效的状态。1:将xss过滤为有效的状态。
3.dnt:拒绝个人的信息被手机,表示拒绝精确广告追踪的方法。 0:同一被追踪,1:拒绝别追踪。
HTTP模式
1 .http协议采取请求-应答模式,使用普通模式,非keep-alive模式,每次请求和应答都需要新建一个连接,完成之后立即断开连接.当使用keep-alive模式时,keep-alive功能使客户都安到服务端的连接持续有效.当出现对服务器的后继请求时,keep-alive功能避免了建立或者重新建立连接
2 .短连接:每次请求一个资源就建立连接,请求完成后连接马上关闭.每次请求都经过创建,请求资源-相应资源-释放连接这样的过程
3 .长连接:建立一次连接,多次资源请求都复用这个连接,完成后关闭.请求一个页面上的十张图,只需要建立一次TCP连接,然后依次请求十张图.等待资源响应,释放连接
4 .并行连接:ing发的短连接