、 在Form裏面,可以使用post也可以使用get。它們都是method的合法取值。但是,post和get方法在使用上至少有兩點不同:
1、Get方法通過URL請求來傳遞用戶的輸入。Post方法通過另外的形式。
2、Get方式的提交你需要用Request.QueryString來取得變量的值,而Post方式提交時,你必須通過Request.Form來訪問提交的內容。
提示
通過get方法提交數據,可能會帶來安全性的問題。比如一個登陸頁面。當通過get方法提交數據時,用戶名和密碼將出現在URL上。如果:
1、 登陸頁面可以被瀏覽器緩存;
2、 其他人可以訪問客戶的這臺機器。
那麼,別人即可以從瀏覽器的歷史記錄中,讀取到此客戶的賬號和密碼。所以,在某些情況下,get方法會帶來嚴重的安全性問題。
建議 :在Form中,建議使用post方法。
二、<form action="" method="post">刷新時會彈出提示框,問是否重新發送請求,若改爲method=get則不會有該提示,以下是post和get的一些區別
post請求無長度限制(至少是理論上的)
get有長度限制,最長不超過2048字節(1024個漢字)
三、還記得Request.QueryString()嗎,只要是用get傳遞值,那麼都會跟在http請求的串後面!可以試試!而post則不會在http請求串的後面,而是在請求的最後面!而且看不見的,一般密碼可一定得這樣傳了,否則在地址欄裏可以直接看見!!(雖然都不加密)
還有就是post傳的內容多一些
再就是一般的用IIS過濾器的只接受get參數,這就是爲什麼那些大型搜索引擎後面都是一大堆的內容了,因爲post不能發過去,只能用get。看看Goole或是yahoo等知道了!
四、表單提交中get和post方式的區別歸納如下幾點:
1. get是從服務器上獲取數據,post是向服務器傳送數據。
2. get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個字段一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個字段與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。
3. 對於get方式,服務器端用Request.QueryString獲取變量的值,對於post方式,服務器端用Request.Form獲取提交的數據。
4. get傳送的數據量較小,不能大於2KB。post傳送的數據量較大,一般被默認爲不受限制。但理論上,IIS4中最大量爲80KB,IIS5中爲100KB。
5. get安全性非常低,post安全性較高。
POST方法注意事項:
從a.html 通過form action=abc.aspx 傳值到abc.aspx, 從html傳值到aspx的方法:
1.用jquery post 數據:
{
a:'c',
c:$("#txtContent").val()
},
function (data){
$("#txtResult").append('<div id="d'+id+'" style="height:'+$("#txtResult").height()+'px;"><div style="display:none" id="p'+id+'">'+$("#content",data).html()+'</div></div>');
2.Request.Form["元素的name不是ID"]
a.HTML
<INPUT TYPE="text" NAME="Text" VALUE="TTTTTTTTTTTTTTTTT"/>
<input type="submit" name="Submit" value="提交">
</FORM>
abc.aspx
{
string a = Request.Form["Text"];
Response.Write(a);
}
################################################################
具體步驟:
Post和Get都是表單屬性Method的可選值,Method的默認值爲Get,兩者的主要區別在於:
1.在客戶端,Get方式在通過URL提交數據,提交後在地址欄中的地址如圖1.4.3所示。
圖1.4.3 Get方式提交表單後的地址欄
而Post提交後地欄不變,如圖1.4.4所示。
圖1.4.4 Post方式提交表單後的地址欄不變
2.在服務器端只能用Request.QueryString來獲取Get方式提交來的數據,用Post方式提交的數據只能用Request.Form來獲取:
<%@language="VBScript" Codepage="936"%>
<html>
<head>
<title> 表單提交方式測試</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<form method="post" action="<%=Request.ServerVariables("Script_Name")%>">
提交數據:
<input name="oStr" type="text">
<br>
提交方式:
<select name="select" onchange="this.form.method=this.value">
<option value="Post" selected>Post</option>
<option value="Get">Get</option>
</select>
<br>
<input type="submit" name="Submit" value="提交">
</form>
<%
if Request("Submit")<>"" then
Response.Write "通過"&Request.ServerVariables("Request_Method")&"方式提交的數據爲:"
if Request.ServerVariables("Request_Method")="GET" then
Response.Write Request.QueryString("oStr")
else
Response.Write Request.Form("oStr")
end if
end if
%>
</body>
</html>
注意:雖然兩種提交方式可以統一用Request("oStr")來獲取提交數據,但是這樣對程序效率有影響,不推薦使用。
特別提示
通過IIS運行本例代碼(用http://localhost/method.asp這種方式來瀏覽,有關IIS的安裝和配置,請參考第四部分),輸入所提交的數據,選擇Post方式提交,將看到圖1.4.4所示的效果。選擇Get方式提交,效果將如圖1.4.3所示。
特別說明
一般來說,儘量避免使用Get方式提交表單,因爲有可能會導致安全問題。比如說在登陸表單中用Get方式,用戶輸入的用戶名和密碼將在地址欄中暴露無遺。但是在分頁程序中,用Get方式就比用Post好。本例中用到的表單的屬性解釋(ASP部分請參考第四部分):
Get把參數添加到action屬性指定的地址中,並以錨方式打開。
Post通過HTTP post處理髮送數據。
http://www.cnblogs.com/kingjiong/archive/2008/09/28/1301601.html