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資源。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章