Http报文小探

来源:互联网 发布:mac口红日本买便宜多少 编辑:程序博客网 时间:2024/05/22 09:03

曾经做过一个社交APP,大家都知道,像什么陌陌,什么微信,总少不了经常上传自拍照啊什么的.

对于观看者,为了帮助他们节省宝贵的流量,上传的照片,服务器一般都会单独再保存一个缩略图,客户端先读取那些缩略图,观看者发现感兴趣,再读取大图观看.

同样为了节省流量,这种大图是需要缓存在本地的,而图片何时过期何时,需要再重新从服务器读取,使我产生了研究下Http报文的念头.


在firefox上,有live http header这种插件,能帮我们抓取到报文的header.

下面是我使用firefox v26.0访问百度时产生的request报文头:

第一行是request-line,格式是:request-method URL Http版本,从这里看得出是Get方法.

第二行开始便是header:   (这个地址完整详细的讲解报文头字段的含义: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html)

Host表示服务器域名,结合request-line中的URL就是要访问的资源.

其他的我就跳过了.这里有一个Connection的字段,其值为keep-alive,表示客户端向服务器发起的http为持久连接.

下面看一个Post方法的请求:


可以看到Content-Length表示了报文Body的长度(因为是Post,所以才有).

最后一行就是body的内容,因为我抓取的是126邮箱的http报文,所以可以看到post的参数.

(我把我的邮箱密码用md5加密之后对比password,是能对上的=_=,

再多说一点,现在是有网站可以在线通过记录查询md5码对应值的,所以说么,大多数人的邮箱安全性....堪忧)

下面访问百度时,服务器所响应的报文头:


除了前面看到的GET和POST方法之外,还有HEAD方法.HEAD方法和GET方法一样,除了得到服务器的响应中没有消息体,而其他的报文头和GET方式得到的相同.

主要用来测试一个超文本链接的合法性,可连接性,以及最近的修改.

而询问服务器图片是否更改过的方法,是在报文中加入If-Modified-Since参数,如果该资源并没有在指定的时间段内修改,

response返回code304就表示资源未被修改过,如果资源修改过,则返回资源.

上面只是讲了寥寥几个参数,源文档还有好多参数及详细细节写了好大几页...

0 0
原创粉丝点击