首页 > 代码库 > HTTP报文解析

HTTP报文解析

//我是一个Post请求,我告诉服务器:我要http://localhost:1538/WebForm1.aspx页面,我支持的httpb版本是1.1
POST http://localhost:1538/WebForm1.aspx HTTP/1.1
-----------------------------------------------------------------------------------------------------

Accept: text/html, application/xhtml+xml, */*

-----------------------------------------------------------------------------------------------------
//告诉服务器我是从哪个页面链接过来的
Referer: http://localhost:1538/WebForm1.aspx

-----------------------------------------------------------------------------------------------------
//我(浏览器)支持zh-CN语言(简体中文)
Accept-Language: zh-CN
-----------------------------------------------------------------------------------------------------

Content-Type: application/x-www-form-urlencoded
-----------------------------------------------------------------------------------------------------
//告诉服务器,我(浏览器)是兼容Mozilla/5.0的浏览器,版本是11.0(rv:11.0)  浏览器(IE)的排版引擎是7.0版本的(Trident/7.0)【如果是火狐浏览器Firefox对应的则是Gecko ,Gecko则是 Firefox 使用的排版引擎,也称渲染引擎】 我的操作系统的版本是64位(WOW64)的windows7(Windows NT 6.1),
//xp是windows nt5.1,vista是windows nt6.0,win7是windows nt6.1,win8是windows nt6.2
//like Gecko则是IE11的新标识,表示它是兼容Gecko的内核。IE11之前的版本比标识名字则是 MSIE
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
-----------------------------------------------------------------------------------------------------

//这条信息代表本地可以接收压缩格式(gzip)的数据;服务器接收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩;在用户浏览器发送请求的HTTP头中, 带有"Accept-Encoding: gzip, deflate"参数则表明支持gzip和deflate两种压缩算法.  服务器在处理时就将大文件压缩再发回客户端,IE在接收完成后在本地自动对这个文件又进行了解压操作。压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。
【我们可以使用两种不同的方法压缩内容:GZip 和 deflate;详情:http://jingyan.baidu.com/article/9f63fb91d862b0c8400f0eb0.html】
Accept-Encoding: gzip, deflate
-----------------------------------------------------------------------------------------------------

Host: localhost:1538
-----------------------------------------------------------------------------------------------------
Content-Length: 429
-----------------------------------------------------------------------------------------------------

//一般情况下,一旦web服务器想浏览器发送完了请求数据,它就要关闭TCP连接,如果报文里加了Connection: Keep-Alive就不一样了,它会保持连接特性
//从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性,简单地说,当开启了Keep-Alive后,单一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接就不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接
//因为css,图片,js都是单独的请求(Reques),我当这个页面刚打开后,我是建议服务器别把我这个连接给我关掉,我后面还要请求图片呢。这样就不需要在下次请求的时候再次开启一个连接了【其实也就是在一个连接中有几个请求】
Connection: Keep-Alive
-----------------------------------------------------------------------------------------------------
Pragma: no-cache
-----------------------------------------------------------------------------------------------------
//浏览器给Cokkie发给服务器了。
Cookie: ASP.NET_SessionId=itcka5su2tuqimfk3r5h0v4y

__VIEWSTATE=%2FwEPDwUKMjExMTY5ODM3MA9kFgICAw9kFgICAQ8PFgIeBFRleHQFDzDliqDkuIotNuetieS6jmRkZI7u6iaGEp1Y8ibYMCEez59fyciMHOcKtdE1mBzZ6oZe
-----------------------------------------------------------------------------------------------------