表單的提交方式POST和GET有什么區(qū)別
![]() 兩者的區(qū)別需要通過提交表單后才看得出來,主要是在數(shù)據(jù)發(fā)送方式和接收方式上。 ![]() Post和Get都是表單屬性Method的可選值,Method的默認(rèn)值為Get,兩者的主要區(qū)別在于: 1.在客戶端,Get方式在通過URL提交數(shù)據(jù),提交后在地址欄中的地址如圖1.4.3所示。 ![]() 圖1.4.3 Get方式提交表單后的地址欄 而Post提交后地欄不變,如圖1.4.4所示。 ![]() 圖1.4.4 Post方式提交表單后的地址欄不變 2.在服務(wù)器端只能用Request.QueryString來獲取Get方式提交來的數(shù)據(jù),用Post方式提交的數(shù)據(jù)只能用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")%>"> 提交數(shù)據(jù): <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")&"方式提交的數(shù)據(jù)為:" if Request.ServerVariables("Request_Method")="GET" then Response.Write Request.QueryString("oStr") else Response.Write Request.Form("oStr") end if end if %> </body> </html> 注意:雖然兩種提交方式可以統(tǒng)一用Request("oStr")來獲取提交數(shù)據(jù),但是這樣對程序效率有影響,不推薦使用。 特別提示 通過IIS運(yùn)行本例代碼(用http://localhost/method.asp這種方式來瀏覽,有關(guān)IIS的安裝和配置,請參考第四部分),輸入所提交的數(shù)據(jù),選擇Post方式提交,將看到圖1.4.4所示的效果。選擇Get方式提交,效果將如圖1.4.3所示。 特別說明一般來說,盡量避免使用Get方式提交表單,因?yàn)橛锌赡軙?huì)導(dǎo)致安全問題。比如說在登陸表單中用Get方式,用戶輸入的用戶名和密碼將在地址欄中暴露無遺。但是在分頁程序中,用Get方式就比用Post好。本例中用到的表單的屬性解釋(ASP部分請參考第四部分): Get把參數(shù)添加到action屬性指定的地址中,并以錨方式打開。 Post通過HTTP post處理發(fā)送數(shù)據(jù)。 責(zé)任編輯:kissall 時(shí)間:2005年8月29日
|
|