Get 与 Post 【总结】 (实例:从a.html到b.aspx传值)
一、 在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??纯碐oole或是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 數據:
$.post($("#txtAddress").val(),????{
????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???
<FORM?ACTION="Test_Post_To_ASPX.aspx"?METHOD="post">?<INPUT?TYPE="text"?NAME="Text"?VALUE="TTTTTTTTTTTTTTTTT"/>?
<input?type="submit"?name="Submit"?value="提交">?
</FORM>?
?
abc.aspx
?protected?void?Page_Load(object?sender,?EventArgs?e)????{
????????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處理發送數據。
轉載于:https://www.cnblogs.com/kingjiong/archive/2008/09/28/1301601.html
總結
以上是生活随笔為你收集整理的Get 与 Post 【总结】 (实例:从a.html到b.aspx传值)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET2.0 - ASP.net
- 下一篇: ref 参数与 out 参数