标签:pow lin code 成功 请求头 method image key ati
Http请求即客户端发送给服务器的请求。该请求的内容格式如下所示:
请求首行
请求头信息
空行
请求正文,也称请求体
请求信息详细内容如下:
GET /Example03/ HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, */*
Accept-Language: en-US,zh-CN;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; qdesk 2.4.1265.203; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3)
Accept-Encoding: gzip, deflate
Host: localhost:8080
Connection: Keep-Alive
Cookie: JSESSIONID=9E0C4BDEAFD1EB2B1060D69C3B96F72D
(1)首先分析其请求首行:GET /Example03/ HTTP/1.1
GET :指的是请求方式。
/Example03 :指的是请求地址,即URL。
HTTP/1.1 :指的是协议及版本号。
(2)接着分析请求头信息,由以上请求头信息可知,请求头信息的格式如下所示:
l请求头名称
冒号
请求头值
现在我们来一一分析这些请求头,理解它们的作用:
Accept :告诉服务器当前浏览器支持的MIME类型。
Accept-Language :告诉服务器当前浏览器支持的语言环境,这里的值是en-US,zh-CN。enà表示英文,USà表示美国,zhà表示中文,CNà表示中国。
User-Agent :表示当前浏览器的类型和OS的类型,其中MSIE 8.0表示是ie浏览器,版本是8.0等。
Accept-Encoding :当前浏览器支持的数据压缩格式,有时候服务器给浏览器发送的东西很大,这时候服务器就要考虑当数据被压缩后,浏览器能不能给解压出来,那么这个请求头就是浏览器告诉服务器它能够解压的格式。
Host :浏览器请求的主机名和端口号,在这里它请求的主机是localhost,虽然后面没有显示端口号,但是你要知道这个端口号是80,它是http协议默认的端口号。
Connection :连接的方式,Keep-Alive表示的意思是连接一会。
Cookie :这是一个与cookie相关的请求头。
(3)请求信息中的空行,处于请求头和请求正文之间。
(4)以上请求信息中没有请求正文,是因为该请求方式是GET请求,而GET方式的请求信息中是没有请求正文的,我们接下来要学习POST请求有请求正文。后面我们会详细介绍请求正文。
在HTTP请求消息中,请求方式有GET、POST、HEAD、OPTIONS、DELETE、TRACE、PUT和CONNECT八种。而在以后们最常用的有两种请求方式:POST请求、GET请求。这两种请求方式所对应的请求协议内容略有不同,在上面中,我们已经了解了GET请求方式的请求信息,下面是Post请求。
我们在浏览器地址栏上直接输入网址访问资源,这种请求方式是GET请求,超链接请求也属于GET请求,下面我们要演示的是POST请求:
(1) 创建一个web应用,名称为Example04,并在该应用中的WebRoot目录下新建一个form.html文件。
<form action="/Example04/index.jsp" method="post"> 用户名:<input type="text" name="username"/></br> 密码:<input type="password" name="password"/></br> <input type="submit" value="提交"/> </form>
(2) 将Example04发布到Tomcat中,启动Tomcat服务器。在浏览器端地址栏上输入http://localhost:8080/Example04/form.html,并使用HttpWatch进行抓包。
(3) 在用户名文本框中输入:zhangsan,密码文本框中输入:123。再点击【提交】按钮。
(4)我们通过HttpWatch成功的抓取到form表单提交之后的请求信息。
POST /Example04/index.jsp HTTP/1.1 Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, */* Referer: http://localhost:8080/Example04/form.html Accept-Language: en-US,zh-CN;q=0.5 User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; qdesk 2.4.1265.203; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3) Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate Host: localhost:8080 Content-Length: 30 Connection: Keep-Alive Cache-Control: no-cache username=zhangsan&password=123
(5)现在我们再抓取一段GET方式请求信息,在浏览器地址栏上输入:http://localhost:8080/Example04?username=zhangsan&password=123
(6)get请求信息
GET /Example04?username=zhangsan&password=123 HTTP/1.1 Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, */* Accept-Language: en-US,zh-CN;q=0.5 User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; qdesk 2.4.1265.203; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3) Accept-Encoding: gzip, deflate Host: localhost:8080 Connection: Keep-Alive Cookie: JSESSIONID=5386A9443729D7EB0B61E38A9C7CF52F
将post方式请求信息与get方式请求信息进行比较,有以下两点区别:
1.请求首行区别:请求参数的位置不同
以上两种请求方式都是带参数的请求,POST请求首行是:POST /Example04/index.jsp HTTP/1.1,GET请求首行为: GET /Example04?username=zhangsan&password=123 HTTP/1.1,其中GET请求首行中,”?”后面的是请求参数,多个请求参数之间用”&”连接。可以看出,POST请求的请求参数并不在请求首行中。
2.GET请求没有请求体,POST请求有请求体
GET请求没有请求体。从例1-2可以看出,POST请求有请求体,而且请求体的内容是从form.html页面提交过来的参数。这些参数的格式:参数名=参数值&参数名=参数值&…,get请求没有请求体,它的请求参数附加在请求首行的url后面。
当服务器收到浏览器的请求后,会发送响应消息给浏览器。一个完整的响应消息主要包括响应首行、响应头信息、空行和响应正文。其中,每个部分都代表了不同的含义。下面我们会围绕HTTP响应消息的每个组成部分进行详细分析。
下面我们通过HttpWatch抓包工具,抓取一段响应信息,然后对该信息进行分析。
(1)创建web应用Example05,将该应用发布到Tomcat服务器,启动Tomcat服务器。在浏览器地址栏输入http://localhost:8080/Example05/index.jsp。使用HttpWatch进行抓包,抓取的响应消息
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/html;charset=UTF-8 Content-Length: 624 Date: Mon, 03 Nov 2014 06:37:28 GMT <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="http://localhost:8080/Example05/"> <title>My JSP ‘index.jsp‘ starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> This is my JSP page. <br> </body> </html>
由响应消息内容,分析可知:
(1)响应首行:其内容是”HTTP/1.1 200 OK”
HTTP/1.1 :表示协议版本
200 :表示响应状态码,200表示响应成功。
OK :表示响应成功,对响应状态码的解释。
(2)响应头信息:类似于请求消息中的请求头,其格式和请求头信息格式一样,即响应头:响应头值。
Server响应头 :该响应头是服务器告诉浏览器,当前响应的服务类型和版本。
Content-Type响应头 :服务器告诉浏览器响应内容是什么类型,以及采用的是什么字符编码。该响应头的值现在为:text/html;charset=utf-8。说明响应信息的类型是文本类型中的html,使用的字符编码是utf-8。
Content-Length响应头 :服务器告诉浏览器,响应内容的长度,该响应内容的长度现在是624个字节。
Date响应头 :表示是服务器是在什么时候响应回浏览器,注意这里的时间是按照美国时间来计算。
(3)空行:响应头和响应体由空行连接。
(4)响应体:该响应消息的响应体是一个html文档。浏览器可以直接识别这个html文件。而我们访问的是一个jsp文件,响应回去的是一个html文件。说明服务器将该jsp翻译成了一个html,然后再响应给浏览器。
标签:pow lin code 成功 请求头 method image key ati
原文地址:https://www.cnblogs.com/geogre123/p/9742518.html