數(shù)據(jù)均來(lái)自網(wǎng)絡(luò):請(qǐng)支持原創(chuàng)作者。
www.blogjava.net/beandy809/archive/2007/11/21/162074.html
www.apkbus.com/android-13575-1-1.html
第一種版本:
HTTP 定義了與服務(wù)器交互的不同方法,最基本的方法是 GET 和 POST饶火。
事實(shí)上 GET 適用于多數(shù)請(qǐng)求崇堵,而保留 POST 僅用于更新站點(diǎn)桨吊。根據(jù) HTTP 規(guī)范挎塌,GET 用于信息獲取艘蹋,而且應(yīng)該是 安全的和 冪等的沸手。所謂安全的意味著該操作用于獲取信息而非修改信息外遇。換句話說(shuō),GET 請(qǐng)求一般不應(yīng)產(chǎn)生副作用契吉。冪等的意味著對(duì)同一 URL 的多個(gè)請(qǐng)求應(yīng)該返回同樣的結(jié)果跳仿。完整的定義并不像看起來(lái)那樣嚴(yán)格。從根本上講捐晶,其目標(biāo)是當(dāng)用戶打開(kāi)一個(gè)鏈接時(shí)菲语,它可以確信從自身的角度來(lái)看沒(méi)有改變資源。比如惑灵,新聞?wù)军c(diǎn)的頭版不斷更新山上。雖然第二次請(qǐng)求會(huì)返回不同的一批新聞,該操作仍然被認(rèn)為是安全的和冪等的英支,因?yàn)樗偸欠祷禺?dāng)前的新聞佩憾。反之亦然。
POST 請(qǐng)求就不那么輕松了。POST 表示可能改變服務(wù)器上的資源的請(qǐng)求妄帘。仍然以新聞?wù)军c(diǎn)為例楞黄,讀者對(duì)文章的注解應(yīng)該通過(guò) POST 請(qǐng)求實(shí)現(xiàn),因?yàn)樵谧⒔馓峤恢笳军c(diǎn)已經(jīng)不同了(比方說(shuō)文章下面出現(xiàn)一條注解)寄摆;
在FORM提交的時(shí)候谅辣,如果不指定Method,則默認(rèn)為GET請(qǐng)求婶恼,F(xiàn)orm中提交的數(shù)據(jù)將會(huì)附加在url之后桑阶,以?分開(kāi)與url分開(kāi)。字母數(shù)字字符原樣發(fā)送勾邦,但空格轉(zhuǎn)換為“+“號(hào)蚣录,其它符號(hào)轉(zhuǎn)換為%XX,其中XX為該符號(hào)以16進(jìn)制表示的ASCII(或ISO Latin-1)值。GET請(qǐng)求請(qǐng)?zhí)峤坏臄?shù)據(jù)放置在HTTP請(qǐng)求協(xié)議頭中眷篇,而POST提交的數(shù)據(jù)則放在實(shí)體數(shù)據(jù)中萎河;
GET方式提交的數(shù)據(jù)最多只能有1024字節(jié),而POST則沒(méi)有此限制蕉饼。
第二種版本:
1)get是從服務(wù)器上獲取數(shù)據(jù)虐杯,post是向服務(wù)器傳送數(shù)據(jù)。
(1)? ?在客戶端昧港,Get方式在通過(guò)URL提交數(shù)據(jù)擎椰,數(shù)據(jù)在URL中可以看到;POST方式创肥,數(shù)據(jù)放置在HTML HEADER內(nèi)提交达舒。
(2) 對(duì)于get方式,服務(wù)器端用Request.QueryString獲取變量的值叹侄,對(duì)于post方式巩搏,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)。
(2) GET方式提交的數(shù)據(jù)最多只能有1024字節(jié)趾代,而POST則沒(méi)有此限制贯底。
(3)? ?安全性問(wèn)題。正如在(1)中提到撒强,使用 Get 的時(shí)候丈甸,參數(shù)會(huì)顯示在地址欄上,而 Post 不會(huì)尿褪。所以,如果這些數(shù)據(jù)是中文數(shù)據(jù)而且是非敏感數(shù)據(jù)得湘,那么使用 get杖玲;如果用戶輸入的數(shù)據(jù)不是中文字符而且包含敏感數(shù)據(jù),那么還是使用 post為好淘正。
下面舉一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明它們的區(qū)別:
<!-分別通過(guò)get和post方式提交表單-->?
?<FORM ACTION="getpost.asp" METHOD="get">?
?<INPUT TYPE="text" VALUE="http://wxf0701.cnblogs.com//>?
?<INPUT TYPE="submit" VALUE="Get方式"></INPUT>?
?</FORM> <BR> <FORM ACTION="getpost.asp" METHOD="post">?
?<INPUT TYPE="text" VALUE="http://wxf0701.cnblogs.com/>?
?<INPUT TYPE="submit" VALUE="Post方式"></INPUT> </FORM> <BR>
<% If Request.QueryString("Text") <> "" Then %>
通過(guò)get方式傳遞的字符串是: "<%= Request.QueryString("Text") %>"
<% End If %>
<% If Request.Form("Text") <> "" Then %>
通過(guò)Post方式傳遞的字符串是: "<%= Request.Form("Text") %>"
<% End If %>
第三種版本:
Form中的get和post方法摆马,在數(shù)據(jù)傳輸過(guò)程中分別對(duì)應(yīng)了HTTP協(xié)議中的GET和POST方法臼闻。二者主要區(qū)別如下:
1、Get是用來(lái)從服務(wù)器上獲得數(shù)據(jù)囤采,而Post是用來(lái)向服務(wù)器上傳遞數(shù)據(jù)述呐。
2、 Get將表單中數(shù)據(jù)的按照variable=value的形式蕉毯,添加到action所指向的URL后面乓搬,并且兩者使用“?”連接,而各個(gè)變量之間使用 “&”連接代虾;Post是將表單中的數(shù)據(jù)放在form的數(shù)據(jù)體中进肯,按照變量和值相對(duì)應(yīng)的方式,傳遞到action所指向URL棉磨。
3江掩、 Get是不安全的,因?yàn)樵趥鬏斶^(guò)程乘瓤,數(shù)據(jù)被放在請(qǐng)求的URL中环形,而如今現(xiàn)有的很多服務(wù)器、代理服務(wù)器或者用戶代理都會(huì)將請(qǐng)求URL記錄到日志文件中衙傀,然后放在某個(gè)地方抬吟,這樣就可能會(huì)有一些隱私的信息被第三方看到。另外差油,用戶也可以在瀏覽器上直接看到提交的數(shù)據(jù)拗军,一些系統(tǒng)內(nèi)部消息將會(huì)一同顯示在用戶面前。 Post的所有操作對(duì)用戶來(lái)說(shuō)都是不可見(jiàn)的蓄喇。
4发侵、Get傳輸?shù)臄?shù)據(jù)量小,這主要是因?yàn)槭躑RL長(zhǎng)度限制妆偏;而Post可以傳輸大量的數(shù)據(jù)刃鳄,所以在上傳文件只能使用Post(當(dāng)然還有一個(gè)原因,將在后面的提到)钱骂。
5叔锐、Get限制Form表單的數(shù)據(jù)集的值必須為ASCII字符;而Post支持整個(gè)ISO10646字符集见秽。
6愉烙、Get是Form的默認(rèn)方法。
action的引號(hào)內(nèi)填的是路徑方法解取,比如發(fā)送到郵箱或其他網(wǎng)頁(yè)什么的