HTTP报文分为请求报文和响应报文两种,每种报文必须按照特有格式生成,才能被浏览器端识别。
其中,浏览器端向服务器发送的为请求报文,服务器处理后返回给浏览器端的为响应报文。
-
1、请求报文
HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
请求行,用来说明请求类型,要访问的资源以及所使用的HTTP版本。 GET说明请求类型为GET,/562f25980001b1b106000338.jpg(URL)为要访问的资源,该行的最后一部分说明使用的是HTTP1.1版本。 请求头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息。 HOST,给出请求资源所在服务器的域名。 User-Agent,HTTP客户端程序的信息,该信息由你发出请求使用的浏览器来定义,并且在每个请求中自动发送等。 Accept,说明用户代理可处理的媒体类型。 Accept-Encoding,说明用户代理支持的内容编码。 Accept-Language,说明用户代理能够处理的自然语言集。 Content-Type,说明实现主体的媒体类型。 Content-Length,说明实现主体的大小。 Connection,连接管理,可以是Keep-Alive或close。 空行,请求头部后面的空行是必须的即使第四部分的请求数据为空,也必须有空行。 请求数据也叫主体,可以添加任意的其他数据。
其中,请求分为两种,GET和POST,具体的:
-
1.1、GET
1 GET /562f25980001b1b106000338.jpg HTTP/1.1 2 Host:img.mukewang.com 3 User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) 4 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 5 Accept:image/webp,image/*,*/*;q=0.8 6 Referer:http://www.imooc.com/ 7 Accept-Encoding:gzip, deflate, sdch 8 Accept-Language:zh-CN,zh;q=0.8 9 空行 10 请求数据为空
-
1.2、POST
1 POST / HTTP1.1 2 Host:www.wrox.com 3 User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) 4 Content-Type:application/x-www-form-urlencoded 5 Content-Length:40 6 Connection: Keep-Alive 7 空行 8 name=Professional%20Ajax&publisher=Wiley
-
-
2、响应报文
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。 第一行为状态行,(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为OK。 消息报头,用来说明客户端要使用的一些附加信息。 第二行和第三行为消息报头,Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8。 空行,消息报头后面的空行是必须的。 响应正文,服务器返回给客户端的文本信息。空行后面的html部分为响应正文。
1HTTP/1.1 200 OK 2Date: Fri, 22 May 2009 06:07:21 GMT 3Content-Type: text/html; charset=UTF-8 4空行 5<html> 6 <head></head> 7 <body> 8 <!--body goes here--> 9 </body> 10</html>
-
3、HTTP状态码