Http之Get/Post請求區別 – JAVA編程語言程序開發技術文章

 

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 請求實現,因為在註解提交之後站點已經不同瞭(比方說文章下面出現一條註解)。

下面舉一個簡單的例子來說明它們的區別: www.aiwalls.com

<!-分別通過get和post方式提交表單–>

<FORM ACTION="getpost.asp" METHOD="get">

<INPUT TYPE="text" NAME="Text" VALUE="//>

 

<INPUT TYPE="submit" VALUE="Get方式"></INPUT>

</FORM>

<BR>

<FORM ACTION="getpost.asp" METHOD="post">

<INPUT TYPE="text" NAME="Text" VALUE="/>

 

<INPUT TYPE="submit" VALUE="Post方式"></INPUT>

</FORM>

<BR>

<% 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>

<% End If %>

作者 wxf0701

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。