1. get是從伺服器上擷取資料(會暴露用戶端ip),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方法好。
建議:
1、get方式的安全性較Post方式要差些,包含機密資訊的話,建議用Post資料提交方式;
2、在做資料查詢時,建議用Get方式;而在做資料添加、修改或刪除時,建議用Post方式;
1 問題描述:
xmlhttp:open方法,請求頁面的時候,更新頁面資料後,第2次拿到的結果還是上次的資訊
2 解決辦法:
改用POST方式
3 說明:
xmlhttp:open方法
建立一個新的http請求,並指定此請求的方法、URL以及驗證資訊
文法
oXMLHttpRequest.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword);
參數
bstrMethod
http方法,例如:POST、GET、PUT及PROPFIND。大小寫不敏感。
/*****
POST:用"POST"方式發送資料,可以大到4MB
GET:用"GET"方式發送資料,只能256KB
如果請求帶有參數的化實用POST方式,POST方式將參數放置在頁面的隱藏控制項內
沒有參數使用GET方式
對於請求的頁面在中途可能發生更改的,也最好用POST方式
用GET方式可能會拿不到最新的資訊
*****/
bstrUrl
請求的URL地址,可以為絕對位址也可以為相對位址。
varAsync[可選]
布爾型,指定此請求是否為非同步方式,預設為true。如果為真,當狀態改變時會調用onreadystatechange屬性指定的回呼函數。
bstrUser[可選]
如果伺服器需要驗證,此處指定使用者名稱,如果未指定,當伺服器需要驗證時,會彈出驗證視窗。
bstrPassword[可選]
驗證資訊中的密碼部分,如果使用者名稱為空白,則此值將被忽略。
Example
下面的例子示範從伺服器請求book.xml,並顯示其中的book欄位。
代碼如下 |
複製代碼 |
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0"); xmlhttp.open("GET","http://localhost/books.xml", false); 沒有參數且不會發生改變的用GET,否則用POST xmlhttp.send(); var book = xmlhttp.responseXML.selectSingleNode("//book[@id=''''bk101'''']"); alert(book.xml); |
備忘
調用此方法後,可以調用send方法向伺服器發送資料。
調用頁面
代碼如下 |
複製代碼 |
<script language="javascript" type="text/javascript"> function UpdateData() { var ServerUrl = window.location.href; var str = ServerUrl.split("/"); var ServerUrl = "http://"+str[2]; var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); var serverURL=ServerUrl+"/GetTemp.aspx"; xmlhttp.Open("POST",serverURL, false); xmlhttp.Send("adst"); xmlhttp = null; } </script> |
處理頁面,得到傳入的資料
代碼如下 |
複製代碼 |
private string GetInput() { System.IO.Stream s = Request.InputStream; int count = 0; byte[] buffer = new byte[1024]; StringBuilder builder = new StringBuilder(); while ((count = s.Read(buffer, 0, 1024)) > 0) { builder.Append(Encoding.UTF8.GetString(buffer, 0, count)); } return builder.ToString(); } |