摘錄地址:http://www.mypm.net/blog/user1/wanghuifen/archives/2007/15900.html
Get:是以實(shí)體的方式得到由請(qǐng)求URI所指定資源的信息,如果請(qǐng)求URI只是一個(gè)數(shù)據(jù)產(chǎn)生過程,那么最終要在響應(yīng)實(shí)體中返回的是處理過程的結(jié)果所指向的資源,而不是處理過程的描述。
Post:用來向目的服務(wù)器發(fā)出請(qǐng)求,要求它接受被附在請(qǐng)求后的實(shí)體,并把它當(dāng)作請(qǐng)求隊(duì)列中請(qǐng)求URI所指定資源的附加新子項(xiàng),Post被設(shè)計(jì)成用統(tǒng)一的方法實(shí)現(xiàn)下列功能:
1:對(duì)現(xiàn)有資源的解釋
2:向電子公告欄、新聞組、郵件列表或類似討論組發(fā)信息。
3:提交數(shù)據(jù)塊
4:通過附加操作來擴(kuò)展數(shù)據(jù)庫(kù)
從上面描述可以看出,Get是向服務(wù)器發(fā)索取數(shù)據(jù)的一種請(qǐng)求;而Post是向服務(wù)器提交數(shù)據(jù)的一種請(qǐng)求,要提交的數(shù)據(jù)位于信息頭后面的實(shí)體中。很理論化,但是很標(biāo)準(zhǔn),method=“get”并不是從服務(wù)器上獲取數(shù)據(jù),get和post 只是發(fā)送機(jī)制不同,并不是一個(gè)取一個(gè)發(fā)!get方法會(huì)在IE地址欄里顯示表示你提交時(shí)候所帶的值;post方法不會(huì)
--------------------------------------------------------------------------------
1、 get是把參數(shù)數(shù)據(jù)隊(duì)列加到提交表單的ACTION屬性所指的URL中,值和表單內(nèi)各個(gè)字段一一對(duì)應(yīng),在URL中可以看到。post是通過HTTP post機(jī)制,將表單內(nèi)各個(gè)字段與其內(nèi)容放置在HTML HEADER內(nèi)一起傳送到ACTION屬性所指的URL地址。用戶看不到這個(gè)過程。
2、對(duì)于get方式,服務(wù)器端用Request.QueryString獲取變量的值,對(duì)于post方式,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)。兩種方式的參數(shù)都可以用Request來獲得。
3、get傳送的數(shù)據(jù)量較小,不能大于2KB。post傳送的數(shù)據(jù)量較大,一般被默認(rèn)為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。
4、get安全性非常低,post安全性較高。
5、 <form method="get" action="a.asp?b=b">跟<form method="get" action="a.asp">是一樣的,也就是說,action頁(yè)面后邊帶的參數(shù)列表會(huì)被忽視;而<form method="post" action="a.asp?b=b">跟<form method="post" action="a.asp">是不一樣的。
另外,Get請(qǐng)求有如下特性:它會(huì)將數(shù)據(jù)添加到URL中,通過這種方式傳遞到服務(wù)器,通常利用一個(gè)問號(hào)?代表URL地址的結(jié)尾與數(shù)據(jù)參數(shù)的開端,后面的參數(shù)每一個(gè)數(shù)據(jù)參數(shù)以“名稱=值”的形式出現(xiàn),參數(shù)與參數(shù)之間利用一個(gè)連接符&來區(qū)分。
Post請(qǐng)求有如下特性:數(shù)據(jù)是放在HTTP主體中的,其組織方式不只一種,有&連接方式,也有分割符方式,可隱藏參數(shù),傳遞大批數(shù)據(jù),比較方便。
--------------------------------------------------------------------------------
post 地址欄不會(huì)出現(xiàn)一大串?bjnghfgreygt這樣的東西
如果是get,就會(huì)出現(xiàn)了
1、Get 方法通過 URL 請(qǐng)求來傳遞用戶的數(shù)據(jù),將表單內(nèi)各字段名稱與其內(nèi)容,以成對(duì)的字符串連接,置于 action 屬性所指程序的 url 后,如
http://www.mdm.com/test.asp?name=asd&password=sad,數(shù)據(jù)都會(huì)直接顯示在 url 上,就像用戶點(diǎn)擊一個(gè)鏈接一樣;Post 方法通過 HTTP post 機(jī)制,將表單內(nèi)各字段名稱與其內(nèi)容放置在 HTML 表頭(header)內(nèi)一起傳送給服務(wù)器端交由 action 屬性能所指的程序處理,該程序會(huì)通過標(biāo)準(zhǔn)輸入(stdin)方式,將表單的數(shù)據(jù)讀出并加以處理
2、 Get 方式需要使用 Request.QueryString 來取得變量的值;而 Post 方式通過 Request.Form 來訪問提交的內(nèi)容
3、Get 方式傳輸?shù)臄?shù)據(jù)量非常小,一般限制在 2 KB 左右,但是執(zhí)行效率卻比 Post 方法好;而 Post 方式傳遞的數(shù)據(jù)量相對(duì)較大,它是等待服務(wù)器來讀取數(shù)據(jù),不過也有字節(jié)限制,這是為了避免對(duì)服務(wù)器用大量數(shù)據(jù)進(jìn)行惡意攻擊,根據(jù)微軟方面的說法,微軟對(duì)用 Request.Form() 可接收的最大數(shù)據(jù)有限制,IIS 4 中為 80 KB 字節(jié),IIS 5 中為 100 KB 字節(jié)
建議:除非你肯定你提交的數(shù)據(jù)可以一次性提交,否則請(qǐng)盡量用 Post 方法
4、Get 方式提交數(shù)據(jù),會(huì)帶來安全問題,比如一個(gè)登陸頁(yè)面,通過 Get 方式提交數(shù)據(jù)時(shí),用戶名和密碼將出現(xiàn)在 URL 上,如果頁(yè)面可以被緩存或者其他人可以訪問客戶這臺(tái)機(jī)器,就可以從歷史記錄獲得該用戶的帳號(hào)和密碼,所以表單提交建議使用 Post 方法;Post 方法提交的表單頁(yè)面常見的問題是,該頁(yè)面如果刷新的時(shí)候,會(huì)彈出一個(gè)對(duì)話框
建議:出于安全性考慮,建議最好使用 Post 提交數(shù)據(jù)