HTTP請求:GET與POST方法的區別
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是向服務器傳送數據。
在客戶端,Get方式在通過URL提交數據,數據在URL中可以看到;POST方式,數據放置在HTML HEADER內提交。
(2)對於get方式,服務器端用Request.QueryString獲取變量的值,對於post方式,服務器端用Request.Form獲取提交的數據。
(3) GET方式提交的數據最多只能有1024字節,而POST則沒有此限制。
(4)安全性問題。正如在(1)中提到,使用 Get 的時候,參數會顯示在地址欄上,而 Post 不會。所以,如果這些數據是中文數據而且是非敏感數據,那麼使用 get;如果用戶輸入的數據不是中文字符而且包含敏感數據,那麼還是使用 post爲好。