HTTP:Hypertext transport protocal 超文本传输协议报文格式
http报文格式:
分为http请求报文和响应报文
http请求报文分为四个部分
* 请求行(Request Line)
* 请求头部(Header)
* 空行(Blank)
* 请求数据(Request Body)
其大概的响应字段表示如下:
如图,是截取的一段JavaEE老师吴志祥的个人教学网站(www.wustwzx.com)的http报文
http报文中的每个字段都是ASCII码值
从图中的方框种可以看出请求方法为GET方法,URL为http://www.wustwzx.com/ 协议版本字段为HTTP/1.1
接下来是请求头,在这种方式下看请求头响应的报文不太清楚,通过fiddler的其他功能得到以下请求头的内容:
请求头是由关键字和键值组成的键值对可以看出这次http请求中响应的关键字段有以下:
HOST:服务器的域名和相应的监听端口,如果是80则省略。(此处的域名为www.wustwzx.com)
Connection:浏览器想要使用的连接类型(此处是keep-alive,就是保持活跃)
Cache-Control:指定当前的请求或者响应是否启用缓存( max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应)
Upgrade-Insecure-Requests:1这个字段表示当前的浏览器告诉服务器,它能读懂服务器发过来的信息,但是请他下一次发送的时候用https(相比较http来说更为安全)
User-Agent: 浏览器的身份标识字符串(后面的信息就是这次抓包的浏览器相应的信息)
Accept:可接受的响应内容类型(text或者html等。。。)
Cookie:保存的就是请求时相应的cookie内容
PS:请求头还有很多其他的类型和说明,可以在https://itbilu.com/other/relate/EJ3fKUwUx.html这里找到相应的参考。
接下来是响应报文
响应报文也是由三个部分组成
* 状态行
* 消息报头
* 响应正文
以下截图为响应报文对应的截图:(图中绿色部分为头部信息)
第一行就是状态行,格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
分别表示响应http的版本,响应状态代码,以及对状态代码的描述。
可以看出状态代码为200,对状态码的描述为ok,可以看出这次请求已经被服务器理解,接收。
以下为不同的状态码所表示的信息。(图内容来自http://www.cnblogs.com/biyeymyhjob/archive/2012/07/28/2612910.html)
响应消息报文,如下:
其对应的关键字段和表示的信息如下:
Cache-Control:还是控制页面的缓存,private是其默认值, 这表示打开新窗口会重新访问服务器,而如果定义了Max-age则表示在对应的时间内不会重新访问服务器。
Content-Length:响应消息长度(注意,是用8进制表示的23706)
Content-type:响应消息的内容类型,为text/html
Server:服务器名称(本次回应请求的服务器名称为:Microsoft-IIS/7.5)。
X-Powered-By: X表示自定义的,这个字段可要可不要,ASP.Net就表示响应消息页面是通过ASP. Net平台开发。
Date:表示响应时间。