HTTP有兩部分組成:請求與響應,下面分別整理。
一.HTTP請求
1.HTTP請求格式:
<request line>
<headers>
<blank line>
[<request-body>]
在HTTP請求中,第一行必須是一個請求行(request line),用來說明請求類型、要訪問的資源以及使用的HTTP版本。緊接著是一個首部(header)小節(jié),用來說明服務器要使用的附加信息。在首部之后是一個空行,再此之后可以添加任意的其他數(shù)據(jù)[稱之為主體(body)]。
2.GET與POST區(qū)別
HTTP 定義了與服務器交互的不同方法,最基本的方法是 GET 和 POST(Ajax開發(fā),關心的只有GET請求和POST請求)。
GET與POST方法有以下區(qū)別:
(1) 在客戶端,Get方式在通過URL提交數(shù)據(jù),數(shù)據(jù)在URL中可以看到;POST方式,數(shù)據(jù)放置在HTML HEADER內提交。
(2) GET方式提交的數(shù)據(jù)最多只能有1024字節(jié),而POST則沒有此限制。
(3) 安全性問題。正如在(1)中提到,使用 Get 的時候,參數(shù)會顯示在地址欄上,而 Post 不會。所以,如果這些數(shù)據(jù)是中文數(shù)據(jù)而且是非敏感數(shù)據(jù),那么使用 get;如果用戶輸入的數(shù)據(jù)不是中文字符而且包含敏感數(shù)據(jù),那么還是使用 post為好。
(4) 安全的和冪等的。所謂安全的意味著該操作用于獲取信息而非修改信息。冪等的意味著對同一 URL 的多個請求應該返回同樣的結果。完整的定義并不像看起來那樣嚴格。換句話說,GET 請求一般不應產(chǎn)生副作用。從根本上講,其目標是當用戶打開一個鏈接時,她可以確信從自身的角度來看沒有改變資源。比如,新聞站點的頭版不斷更新。雖然第二次請求會返回不同的一批新聞,該操作仍然被認為是安全的和冪等的,因為它總是返回當前的新聞。反之亦然。POST 請求就不那么輕松了。POST 表示可能改變服務器上的資源的請求。仍然以新聞站點為例,讀者對文章的注解應該通過 POST 請求實現(xiàn),因為在注解提交之后站點已經(jīng)不同了(比方說文章下面出現(xiàn)一條注解)。
http://www.cnblogs.com/stu-acer/archive/2006/08/28/488802.html
GET與POST方法實例:
GET實例 |
POST實例 |
GET /books/?name=Professional%20Ajax HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive
|
POST / HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive
(此處空一行)
name=Professional%20Ajax&publisher=Wiley
|
3.表單提交中get和post方式的區(qū)別歸納如下幾點:
(1)get是從服務器上獲取數(shù)據(jù),post是向服務器傳送數(shù)據(jù)。
(2)對于表單的提交方式,在服務器端只能用Request.QueryString來獲取Get方式提交來的數(shù)據(jù),用Post方式提交的數(shù)據(jù)只能用Request.Form來獲取。
(3)一般來說,盡量避免使用Get方式提交表單,因為有可能會導致安全問題。比如說在登陸表單中用Get方式,用戶輸入的用戶名和密碼將在地址欄中暴露無遺。但是在分頁程序中,用Get方式就比用Post好。
二.HTTP響應
1.HTTP響應格式:
<status line>
<headers>
<blank line>
[<response-body>]
在響應中唯一真正的區(qū)別在于第一行中用狀態(tài)信息代替了請求信息。狀態(tài)行(status line)通過提供一個狀態(tài)碼來說明所請求的資源情況。
HTTP響應實例:
HTTP/1.1 200 OK
Date: Sat, 31 Dec 2005 23:59:59 GMT
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 122
<html>
<head>
<title>Wrox Homepage</title>
</head>
<body>
<!-- body goes here -->
</body>
</html>
|
2.最常用的狀態(tài)碼有:
◆200 (OK): 找到了該資源,并且一切正常。
◆304 (NOT MODIFIED): 該資源在上次請求之后沒有任何修改。這通常用于瀏覽器的緩存機制。
◆401 (UNAUTHORIZED): 客戶端無權訪問該資源。這通常會使得瀏覽器要求用戶輸入用戶名和密碼,以登錄到服務器。
◆403 (FORBIDDEN): 客戶端未能獲得授權。這通常是在401之后輸入了不正確的用戶名或密碼。
◆404 (NOT FOUND): 在指定的位置不存在所申請的資源。