表單的提交方式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> 表單提交方式測(cè)試</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ù),但是這樣對(duì)程序效率有影響,不推薦使用。
特別提示 通過IIS運(yùn)行本例代碼(用http://localhost/method.asp這種方式來瀏覽,有關(guān)IIS的安裝和配置,請(qǐng)參考第四部分),輸入所提交的數(shù)據(jù),選擇Post方式提交,將看到圖1.4.4所示的效果。選擇Get方式提交,效果將如圖1.4.3所示。
特別說明
一般來說,盡量避免使用Get方式提交表單,因?yàn)橛锌赡軙?huì)導(dǎo)致安全問題。比如說在登陸表單中用Get方式,用戶輸入的用戶名和密碼將在地址欄中暴露無遺。但是在分頁程序中,用Get方式就比用Post好。本例中用到的表單的屬性解釋(ASP部分請(qǐng)參考第四部分):
Get把參數(shù)添加到action屬性指定的地址中,并以錨方式打開。
Post通過HTTP post處理發(fā)送數(shù)據(jù)。
責(zé)任編輯:kissall 時(shí)間:2005年8月29日