HTTP Request 报文结构
Http request报文分为4部分
1. 请求行
请求行主要包括了请求方法,请求的URI 以及 Http协议的版本。
2.请求头
请求头是以<key,value>的形式出现,例如cookie,referer都是在请求头中,每一个<key,value>占一行。
3. 空行
说明请求头部分到此结束了。
4.请求数据部分
get方法是没有该部分的,get方法请求的参数一般会放在请求行的URI中,用?和URI隔开。post方法请求的数据既可以
在请求行的URI后,也可以在body部分。
HTTP Response报文结构
Http Response报文也分为4部分
1. 状态行
状态行中包括了Http协议版本,状态码以及状态码的文本描述
2. 响应头
响应头跟请求头很类似,也是以<key,value>的形式出现的,例如set-cookie等字段。
3. 空行
表示响应头到此结束了。
4.响应数据部分
主要是对request请求响应的数据,例如HTML的代码等。
下面通过wireshark抓包来更深入的了解http request和response的报文
场景: 机器A:ip地址:192.168.101.70
机器B:ip地址:192.168.101.79 该机器上跑了一个web service,
1. 在A机器上通过浏览器访问http://192.168.101.79:8080/WebClient,抓包如下
从上图可以看出通过get 方法来访问192.168.101.79:8080/WebClient 。
2. web service 的web.xml 中定义了
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
而在index.jsp中又做了重定向 response.sendRedirect("SignIn.screen"),抓图如下
上图可以看到状态码为302,表示的是重定向。
3. 浏览器会向http://192.168.101.79:8080/WebClient/SignIn.screen,抓图如下
上图可以开到,通过get方法来请求 http://192.168.101.79:8080/WebClient/SignIn.screen
4.web service 会将SignIn.jsp返回给浏览器。抓图如下
从上图可以看到状态码为200,表示请求完成。
整个流程如下图