第3章——HTTP报文内的HTTP信息
HTTP通信过程包括从客户端发往服务器的请求及从服务器端返回客户端的响应。
3.1HTTP报文
用于HTTP协议交互的信息成为HTTP报文。
请求端(客户端)的HTTP报文叫做请求报文。
相应端(服务器端)的叫做响应报文。
HTTP报文本身是由多行(用CR+LF作换行符)数据构成的字符串文本。
HTTP报文大致可分为报文首部和报文主体两块。两者由最初出现的空行(CR+LF)来划分。通常并不一定有报文主体。
-------------------
报文首部
空行(CR+LF)
报文主体
------------------
3.2请求报文及响应报文的结构
------------------------------------------------------------------
①请求报文
报文首部-------->请求行、请求首部字段、通用首部字段、实体首部字段、其他
空行(CR+LF)
报文主体
------------------------------------------------------------------
②响应报文
报文首部-------->状态行、响应首部字段、通用首部字段、实体首部字段、其他
空行(CR+LF)
报文主体
------------------------------------------------------------------
③请求报文实例
GET /search?hl=zh-CN&source=hp&q=domety&aq=f&oq= HTTP/1.1 //请求行
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint,
application/msword, application/x-silverlight, application/x-shockwave-flash, */*
Referer: <a href="http://www.google.cn/">http://www.google.cn/</a>
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; TheWorld)
Host: <a href="http://www.google.cn">www.google.cn</a>
Connection: Keep-Alive
Cookie: PREF=ID=80a06da87be9ae3c:U=f7167333e2c3b714:NW=1:TM=1261551909:LM=1261551917:S=ybYcq2wpfefs4V9g;
NID=31=ojj8d-IygaEtSxLgaJmqSjVhCspkviJrB6omjamNrSm8lZhKy_yMfO2M4QMRKcH1g0iQv9u-2hfBW7bUFwVh7pGaRUb0RnHcJU37y-
FxlRugatx63JLv7CWMD6UB_O_r //各种首部字段
------------------------------------------------------------------
④响应报文实例
HTTP/1.1 200 OK //状态行
Date: Sat, 31 Dec 2005 23:59:59 GMT
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 122 //各种首部字段
<html> //报文主体
<head>
<title>Wrox Homepage</title>
</head>
<body>
<!-- body goes here -->
</body>
</html>
------------------------------------------------------------------
由此可见,请求报文和响应报文主要由以下四部分组成
请求行
包含用于请求的方法,请求URI和HTTP版本。
状态行
包含表明响应结果的状态码,原因短语和HTTP版本。
首部字段
包含表示请求和响应的各种条件和属性的各类首部。
一般有4中首部,分别是:通用首部、请求首部、响应首部、实体首部。
其他
可能包含HTTP的RFC里未定义的首部(Cookie等)。