HTTP Post &Get 区别
上一篇 / 下一篇 2011-05-30 16:26:00 / 个人分类:测试周边知识
0\2Y'tx0Y8{'J0一 原理区别51Testing软件测试网/Km:Q:`(MM"J
51Testing软件测试网bQ0@Qz"b0N一般在浏览器中输入网址访问资源都是通过GET方式;在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交51Testing软件测试网QbLf7JH
51Testing软件测试网)r\EYFB|Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE
A_7H_Vw0Ko'f_ T:^0 URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查 ,改 ,增 ,删 4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询 资源信息,而POST一般用于更新资源信息(个人认为这是GET和POST的本质区别,也是协议设计者的本意,其它区别都是具体表现形式的差异 )。51Testing软件测试网1val1QI+\mW
Fb#Gw1b'pI)yb0 根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。51Testing软件测试网N4y!JMKcI
`0r:AVrZ;GDv0 1.所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
!A{E }|A0*h t@(Gh(n p7l g:f0 * 注意:这里安全的含义仅仅是指是非修改信息。
%?7K qRq9G0M5K0qGB)W+F,A7`]:n0 2.幂等的意味着对同一URL的多个请求应该返回同样的结果。这里我再解释一下幂等 这个概念:
@mRXu051Testing软件测试网:v3Bl@%jg但在实际应用中,以上2条规定并没有这么严格。引用别人文章的例子:比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。从根本上说,如果目标是当用户打开一个链接时,他可以确信从自身的角度来看没有改变资源即可。51Testing软件测试网(jkHl:H1vM
51Testing软件测试网4Z Jy}?根据HTTP规范,POST表示可能修改变服务器上的资源的请求 。继续引用上面的例子:还是新闻以网站为例,读者对新闻发表自己的评论应该通过POST实现,因为在评论提交后站点的资源已经不同了,或者说资源被修改了。
$gfdJX7lH5l051Testing软件测试网T5mZ%F EZ9A二 表现形式区别51Testing软件测试网~9~ies
51Testing软件测试网 nO)J @2`8I搞清了两者的原理区别,我们再来看一下他们实际应用中的区别:
'L2x"M,m(jx051Testing软件测试网V a7~Z8Uz!Vh为了理解两者在传输过程中的不同,我们先看一下HTTP协议的格式:
:p t#l9MN*HtFl051Testing软件测试网FH6x7RV$e/U;O;m'@HTTP请求:
t+Ax\'k8R*D8qG051Testing软件测试网m tD'\ zV`<request line>
2R4pr@\9G&M051Testing软件测试网4[]Tt%H s$q O@#f<headers>51Testing软件测试网$`ye%Z!Y%z UR4n
51Testing软件测试网)o9e-T(xa<blank line>51Testing软件测试网9l|Wa TE!fB)c7I
*},_F%^B~r0<request-body>]51Testing软件测试网ei)H V;DSg%Yc
.Es6[*Fnwn"l0BYk0 在HTTP请求中,第一行必须是一个请求行(request line),用来说明请求类型、要访问的资源以及使用的HTTP版本。紧接着是一个首部(header)小节,用来说明服务器要使用的附加信息。在首部之后是一个空行,再此之后可以添加任意的其他数据[称之为主体(body)]。51Testing软件测试网#Y4zHiGo/J
Z}#zEU:T0GET与POST方法实例:51Testing软件测试网%_&Pl| v;F$h
GET /books/?sex=man&name=ProfessionalHTTP/1.151Testing软件测试网~2y&M](a.X-n
Host:www.wrox.com
L,H s D]I0User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
`rV ~ t.d&PJ(Y0Gecko/20050225 Firefox/1.0.151Testing软件测试网Z%mWj-r8[*o
Connection: Keep-Alive51Testing软件测试网@'wL"\WG*Hp&T7r!Nn$[0POST / HTTP/1.1
J]5Tz-?W0|!I:NW0Host:www.wrox.com