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。看看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 數據:

$.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處理髮送數據。

 

http://www.cnblogs.com/kingjiong/archive/2008/09/28/1301601.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章