HTTP全称Hypertext Transfer Protocol,即超文本传输协议。超文本即我们常说的富文本。
HTTP的最新版本是1.1,从1997年至今,由于其稳定性和实用性,一直就没有正式的升级过。2.0的协议现在还没有正式版,因为1.1的稳定以及普遍性,完全替代,还遥遥无期。但是2.0一些新特性,比如长连接(服务器推送消息),已经在最新的浏览器和服务器中实现。
HTTP每次连接,都包含2个部分:头域(头文件)和实体。这些名词太专业有木有,举个简单的例子吧。
比如发顺丰快递,对方的地址,电话号码,以及包裹详情就是头文件,而包裹本身就是请求实体。其实HTTP连接就是PC之间互相发包裹而已。
我们来看看HTTP头域包含哪些内容吧。头域分为请求头和响应头,先来看看请求百度CSS文件的HTTP详情:
头域主要包含如下字段
1. User-Agent,Remote Address,Request URL等等
这是客户端发送自己的信息给服务器,服务器用这些信息为每个客户生成唯一的Token(SessionID)。我在上篇文章中,一直强调HTTP的无状态性,很多同学就要问了,服务器怎么确定请求是来自于同一个客户呢(Session)? 答案就是Token。Token是以Cookie的方式进行传输的。
2.缓存
缓存是属于头文件中比较复杂的了。由于其HTTP的版本迭代,包含不同版本缓存的配置方法。比如:cache-control,date,etag,expires,last-modified等等。但是它的实用度远远大于它的复杂度。有兴趣的同学,推荐深入研究一下。
3.Connection:keep-Alive
这个名词叫长连接,但请别被这个词骗了。在HTTP1.1中只是连接复用而已,即每次HTTP连接使用后,不直接销毁。供其他请求使用。现在主流的Web服务器如Apache,Tomcat等都实现了这个功能。
4.关于Cookie
上面提到,Token是以Cookie的形式存储的。大家可能都了解Cookie的机制,但是大家可能不知道的是,客户端的每次请求,都会携带所有的Cookie到服务器,对是所有!所以千万不要以Cookie作为存储数据的媒介。并且,在老版IE中,Cookie的容量只有5KB,存储也会不安全。
HTTP头域主要的就这么多内容了,其他的一些是服务器HTTP的版本,请求编码,相应编码,请求类型等等。
说到请求类型,这里插一段HTTP GET和POST的不同区别吧。
Get提交的数据由于在URL中传输,所以在老版的IE7中,传输的数据量最多不超过256K,GET数据会使用HTTP的缓存来加快速度。
而POST本身对数据量没有限制,但是POST请求本身就屏蔽了缓存功能。所以在使用时,尽可能多的使用GET,至于具体情景,比如保存数据,就另当别论了。
HTTP实体,就是HTTP连接的请求数据以及响应数据。这个就是包裹本身了。并没有什么可讲的。
做技术这么久,真心感到技术和生活是想通的!技术上的种种机制以及趋势,都和生活中的种种是相对的,所谓佛本是道呀!所以我一直钟情于用通俗简单的话语,来讲解很多人认为高深的技术,而不是为了深度而深度。希望大家也保持一颗不畏技术的心!
本次WEB的底层讲解,就到这里了。如果您对我的文章有兴趣,请关于我的微信公众号,谢谢。