超文本傳輸協議(HTTP,HyperText Transfer
Protocol)是互聯網上應用最為廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標準。設計HTTP最初的目的是為了提供一種發布和接收HTML頁面的方法。1960年美國人Ted
Nelson構思了一種通過計算機處理文本信息的方法,并稱之為超文本(hypertext),這成為了HTTP超文本傳輸協議標準架構的發展根基。
http技術架構
HTTP是一個客戶端和服務器端請求和應答的標準(TCP)。客戶端是終端用戶,服務器端是網站。通過使用Web瀏覽器、網絡爬蟲或者其它的工具,客戶端發起一個到服務器上指定端口(默認端口為80)的HTTP請求。(我們稱這個客戶端)叫用戶代理(user agent)。應答的服務器上存儲著(一些)資源,比如HTML文件和圖像。(我們稱)這個應答服務器為源服務器(origin server)。在用戶代理和源服務器中間可能存在多個中間層,比如代理,網關,或者隧道(tunnels)。盡管TCP/IP協議是互聯網上最流行的應用,HTTP協議并沒有規定必須使用它和(基于)它支持的層。 事實上,HTTP可以在任何其他互聯網協議上,或者在其他網絡上實現。HTTP只假定(其下層協議提供)可靠的傳輸,任何能夠提供這種保證的協議都可以被其使用。
通常,由HTTP客戶端發起一個請求,建立一個到服務器指定端口(默認是80端口)的TCP連接。HTTP服務器則在那個端口監聽客戶端發送過來的請求。一旦收到請求,服務器(向客戶端)發回一個狀態行,比如"HTTP/1.1 200 OK",和(響應的)消息,消息的消息體可能是請求的文件、錯誤消息、或者其它一些信息。
HTTP使用TCP而不是UDP的原因在于(打開)一個網頁必須傳送很多數據,而TCP協議提供傳輸控制,按順序組織數據,和錯誤糾正。
http協議基礎
HTTP(HyperText Transport Protocol)是超文本傳輸協議的縮寫,它用于傳送WWW方式的數據,關于HTTP協議的詳細內容請參考RFC2616。HTTP協議采用了請求/響應模型。客戶端向服務器發送一個請求,請求頭包含請求的方法、URL、協議版本、以及包含請求修飾符、客戶信息和內容的類似于MIME的消息結構。服務器以一個狀態行作為響應,響應的內容包括消息協議的版本,成功或者錯誤編碼加上包含服務器信息、實體元信息以及可能的實體內容。
http狀態消息
1xx:信息
消息 描述
100 Continue服務器僅接收到部分請求,但是一旦服務器并沒有拒絕該請求,客戶端應該繼續發送其余的請求。
101 Switching Protocols
服務器轉換協議:服務器將遵從客戶的請求轉換到另外一種協議。
2xx:成功
消息描述
200 OK
請求成功(其后是對GET和POST請求的應答文檔。)
201 Created
請求被創建完成,同時新的資源被創建。
202 Accepted
供處理的請求已被接受,但是處理未完成。
203 Non-authoritative Information
文檔已經正常地返回,但一些應答頭可能不正確,因為使用的是文檔的拷貝。
204 No Content
沒有新文檔。瀏覽器應該繼續顯示原來的文檔。如果用戶定期地刷新頁面,而Servlet可以確定用戶文檔足夠新,這個狀態代碼是很有用的。
205 Reset Content
沒有新文檔。但瀏覽器應該重置它所顯示的內容。用來強制瀏覽器清除表單輸入內容。
206 Partial Content
客戶發送了一個帶有Range頭的GET請求,服務器完成了它。
3xx:重定向
消息描述
300 Multiple Choices
多重選擇。鏈接列表。用戶可以選擇某鏈接到達目的地。最多允許五個地址。
301 Moved Permanently
所請求的頁面已經轉移至新的url。
302 Found
所請求的頁面已經臨時轉移至新的url。
303 See Other
所請求的頁面可在別的url下被找到。
304 Not Modified
未按預期修改文檔。客戶端有緩沖的文檔并發出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務器告訴客戶,原來緩沖的文檔還可以繼續使用。
305 Use Proxy
客戶請求的文檔應該通過Location頭所指明的代理服務器提取。
306 Unused
此代碼被用于前一版本。目前已不再使用,但是代碼依然被保留。
307 Temporary Redirect
被請求的頁面已經臨時移至新的url。
4xx:客戶端錯誤
消息描述
400 Bad Request
服務器未能理解請求。
401 Unauthorized
被請求的頁面需要用戶名和密碼。
401.1
登錄失敗。
401.2
服務器配置導致登錄失敗。
401.3
由于 ACL 對資源的限制而未獲得授權。
401.4
篩選器授權失敗。
401.5
ISAPI/CGI 應用程序授權失敗。
401.7
訪問被 Web 服務器上的 URL 授權策略拒絕。這個錯誤代碼為 IIS 6.0 所專用。
402 Payment Required
此代碼尚無法使用。
403 Forbidden
對被請求頁面的訪問被禁止。
403.1
執行訪問被禁止。
403.2
讀訪問被禁止。
403.3
寫訪問被禁止。
403.4
要求 SSL。
403.5
要求 SSL 128。
403.6
IP 地址被拒絕。
403.7
要求客戶端證書。
403.8
站點訪問被拒絕。
403.9
用戶數過多。
403.10
配置無效。
403.11
密碼更改。
403.12
拒絕訪問映射表。
403.13
客戶端證書被吊銷。
403.14
拒絕目錄列表。
403.15
超出客戶端訪問許可。
403.16
客戶端證書不受信任或無效。
403.17
客戶端證書已過期或尚未生效。
403.18
在當前的應用程序池中不能執行所請求的 URL。這個錯誤代碼為 IIS 6.0 所專用。
403.19
不能為這個應用程序池中的客戶端執行 CGI。這個錯誤代碼為 IIS 6.0 所專用。
403.20
Passport 登錄失敗。這個錯誤代碼為 IIS 6.0 所專用。
404 Not Found
服務器無法找到被請求的頁面。
404.0
(無)–沒有找到文件或目錄。
404.1
無法在所請求的端口上訪問 Web 站點。
404.2
Web 服務擴展鎖定策略阻止本請求。
404.3
MIME 映射策略阻止本請求。
405 Method Not Allowed
請求中指定的方法不被允許。
406 Not Acceptable
服務器生成的響應無法被客戶端所接受。
407 Proxy Authentication Required
用戶必須首先使用代理服務器進行驗證,這樣請求才會被處理。
408 Request Timeout
請求超出了服務器的等待時間。
409 Conflict
由于沖突,請求無法被完成。
410 Gone
被請求的頁面不可用。
411 Length Required
"Content-Length" 未被定義。如果無此內容,服務器不會接受請求。
412 Precondition Failed
請求中的前提條件被服務器評估為失敗。
413 Request Entity Too Large
由于所請求的實體的太大,服務器不會接受請求。
414 Request-url Too Long
由于url太長,服務器不會接受請求。當post請求被轉換為帶有很長的查詢信息的get請求時,就會發生這種情況。
415 Unsupported Media Type
由于媒介類型不被支持,服務器不會接受請求。
416 Requested Range Not Satisfiable
服務器不能滿足客戶在請求中指定的Range頭。
417 Expectation Failed
執行失敗。
423
鎖定的錯誤。
5xx:服務器錯誤
消息描述
500 Internal Server Error
請求未完成。服務器遇到不可預知的情況。
500.12
應用程序正忙于在 Web 服務器上重新啟動。
500.13
Web 服務器太忙。
500.15
不允許直接請求 Global.asa。
500.16
UNC 授權憑據不正確。這個錯誤代碼為 IIS 6.0 所專用。
500.18
URL 授權存儲不能打開。這個錯誤代碼為 IIS 6.0 所專用。
500.100
內部 ASP 錯誤。
501 Not Implemented
請求未完成。服務器不支持所請求的功能。
502 Bad Gateway
請求未完成。服務器從上游服務器收到一個無效的響應。
502.1
CGI 應用程序超時。 ·
502.2
CGI 應用程序出錯。
503 Service Unavailable
請求未完成。服務器臨時過載或當機。
504 Gateway Timeout
網關超時。
505 HTTP Version Not Supported