1.HTTP請求格式:
<request line>
<headers>
<blank line>
[<request-body>]
在HTTP請求中,第一行必須是一個請求行(request line),用來說明請求類型、要通路的資源以及使用的HTTP版本。緊接着是一個首部(header)小節,用來說明伺服器要使用的附加資訊。在首部之後是一個空行,再此之後可以添加任意的其他資料[稱之為主體(body)]。
2.GET與POST差別
HTTP定義了與伺服器互動的不同方法,最基本的方法是 GET 和 POST.
HTTP-GET和HTTP-POST是使用HTTP的标準協定動詞,用于編碼和傳送變量名/變量值對參數,并且使用相關的請求語義。每個HTTP-GET和HTTP-POST都由一系列HTTP請求頭組成,這些請求頭定義了用戶端從伺服器請求了什麼,而響應則是由一系列HTTP應答頭和應答資料組成,如果請求成功則傳回應答。
HTTP-GET以使用MIME類型application/x-www-form-urlencoded的urlencoded文本的格式傳遞參數。Urlencoding是一種字元編碼,保證被傳送的參數由遵循規範的文本組成,例如一個空格的編碼是"%20"。附加參數還能被認為是一個查詢字元串。
與HTTP-GET類似,HTTP-POST參數也是被URL編碼的。然而,變量名/變量值不作為URL的一部分被傳送,而是放在實際的HTTP請求消息内部被傳送。
(1)get是從伺服器上擷取資料,post是向伺服器傳送資料。
(1) 在用戶端,Get方式在通過URL送出資料,資料在URL中可以看到;POST方式,資料放置在HTML HEADER内送出。
(2) 對于get方式,伺服器端用Request.QueryString擷取變量的值,對于post方式,伺服器端用Request.Form擷取送出的資料。
(2) GET方式送出的資料最多隻能有1024位元組,而POST則沒有此限制。
(3) 安全性問題。正如在(1)中提到,使用 Get 的時候,參數會顯示在位址欄上,而 Post 不會。是以,如果這些資料是中文資料而且是非敏感資料,那麼使用 get;如果使用者輸入的資料不是中文字元而且包含敏感資料,那麼還是使用 post為好。
注:所謂安全的意味着該操作用于擷取資訊而非修改資訊。幂等的意味着對同一 URL 的多個請求應該傳回同樣的結果。完整的定義并不像看起來那樣嚴格。換句話說,GET 請求一般不應産生副作用。從根本上講,其目标是當使用者打開一個連結時,她可以确信從自身的角度來看沒有改變資源。比如,新聞站點的頭版不斷更新。雖然第二次請求會傳回不同的一批新聞,該操作仍然被認為是安全的和幂等的,因為它總是傳回目前的新聞。反之亦然。POST 請求就不那麼輕松了。POST 表示可能改變伺服器上的資源的請求。仍然以新聞站點為例,讀者對文章的注解應該通過 POST 請求實作,因為在注解送出之後站點已經不同了(比方說文章下面出現一條注解)。
下面舉一個簡單的例子來說明它們的差別:
<!-分别通過get和post方式送出表單-->
<FORM ACTION="getpost.asp" METHOD="get">
<INPUT TYPE="submit" VALUE="Get方式"></INPUT>
</FORM>
<BR>
<FORM ACTION="getpost.asp" METHOD="post">
<INPUT TYPE="submit" VALUE="Post方式"></INPUT>
<% If Request.QueryString("Text") <> "" Then %>
通過get方式傳遞的字元串是: "<B><%= Request.QueryString("Text") %></B>"<BR>
<% End If %>
<% If Request.Form("Text") <> "" Then %>
通過Post方式傳遞的字元串是: "<B><%= Request.Form("Text") %></B>"<BR>
本文轉自齊師傅部落格園部落格,原文連結:http://www.cnblogs.com/youring2/archive/2011/03/24/HttpRequestMethod_POST_GET.html,如需轉載請自行聯系原作者