http GET与POST用法

 

HTTP客户端与服务器交互有多种不同的方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。HTTP中的GET,POST,PUT,DELETE操作是对URL资源的查,改,增,删4个操作。一般只用GET和POST就能完成这四种操作,所以PUT,DELETE操作很少使用,所以下面就专门介绍一下HTTP的GET和POST操作。
1. HTTP GET
什么时候用GET操作呢?上面已经提到GET主要用来查询目的,也就是用来查询网络资源的信息等,比如要打开一个网站,在浏览器上输入网址后按回车键,其实首先就会发送一个GET操作到网络服务器上。下面就以www.baidu.com网站为例,来看看HTTP GET的操作的具体数据格式。
http://www.baidu.com/
 
GET / HTTP/1.1
Host: www.baidu.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
//上面从GET / HTTP/1.1开始的数据就是GET操作发送给服务器的数据内容
 
HTTP/1.1 200 OK
Date: Thu, 21 Oct 2010 03:53:19 GMT
Server: BWS/1.0
Content-Length: 2951
Content-Type: text/html;charset=gb2312
Cache-Control: private
Expires: Thu, 21 Oct 2010 03:53:19 GMT
Content-Encoding: gzip
Set-Cookie: BAIDUID=B57F1F792BAEC0A6668EFCBDCF14E8E1:FG=1; expires=Thu, 21-Oct-40 03:53:19 GMT; path=/; domain=.baidu.com
P3P: CP=" OTI DSP COR IVA OUR IND COM "
Connection: Keep-Alive
//上面的数据是服务器返回给用户端的响应数据。
2. HTTP POST
POST操作是用来修改服务器上的信息。比如当用户需要登陆邮箱、论坛等需要验证才能进入的网络地址时,需要使用POST来给服务器发送数据。下面以登陆水木BBS为例,来了解POST发送的数据内容。
http://www.newsmth.net/bbslogin2.php
 
POST /bbslogin2.php HTTP/1.1
Host: www.newsmth.net
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.newsmth.net/indexpages/100618-100624-dd/
Content-Type: application/x-www-form-urlencoded
Content-Length: 34
id=sssss&passwd=dddddddd&x=25&y=12
//上面从POST开始的数据为POST发送给服务器的数据内容
HTTP/1.1 200 OK
Server: nginx/0.7.64
Date: Thu, 21 Oct 2010 03:55:15 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Cache-Control: no-store, no-cache, must-revalidate
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Content-Encoding: gzi
//上面从HTTP/1.1 200 OK开始的数据为服务器对上面POST操作的响应。
3. POST与GET的区别
GET是查询指定URL上的资源,是读操作,不论对某个URL资源GET多少次,它的状态是不会改变的,在这个意义上说GET是安全的(因为不会修改服务器上的内容)。因为GET是安全的,所以GET返回的内容可以被浏览器,Cache服务器缓存起来。而POST的语意是对指定URL资源“追加/添加”数据,所以是不安全的,每次提交的POST,参与的代码都会认为这个操作会修改操作对象资源的状态,于是浏览器在你按下F5的时候会跳出确认框,缓存服务器不会缓存POST请求返回内容。
总之,可简单理解为POST只是用来读URL资源,POST是用来修改URL资源。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章