一、HTTP協議概述 HTTP是一個簡單的請求-響應協議,屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分散式超媒體信息系統。它通常運行在TCP之上。它指定了客戶端發送給伺服器什麼樣的消息得到什麼樣的響應。 二、HTTP協議的主要特點可概括如下: 1.B/S結構(Browser/Serv ...
一、HTTP協議概述
HTTP是一個簡單的請求-響應協議,屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分散式超媒體信息系統。它通常運行在TCP之上。它指定了客戶端發送給伺服器什麼樣的消息得到什麼樣的響應。
二、HTTP協議的主要特點可概括如下:
1.B/S結構(Browser/Server,瀏覽器/伺服器模式),這種模式統一了客戶端,將系統功能實現的核心部分集中到伺服器上,簡化了系統的開發、維護和使用。客戶機上只要安裝一個瀏覽器就可以訪問伺服器。
2.簡單快速:客戶向伺服器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、POST。每種方法規定了客戶與伺服器聯繫的類型不同。由於HTTP協議簡單,使得HTTP伺服器的程式規模小,因而通信速度很快。
3.靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。
4.無連接:每次連接只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。
5.無狀態:HTTP無狀態協議,是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在伺服器不需要先前信息時它的應答就較快。
三、HTTP協議詳解之請求篇
http請求由三部分組成,分別是:請求行、消息報頭(請求行)、請求正文(請求內容)。
1、請求行以一個方法符號開頭,以空格分開,後面跟著請求的URI和協議的版本,格式如下:Method Request-URI HTTP-Version CRLF
Method:表示請求方法如GET,POST等;
Request-URI:是一個統一資源標識符如www.baidu.com;
HTTP-Version:表示請求的HTTP協議版本如/ HTTP/1.1 ;
CRLF:表示回車和換行(\r\n 除了作為結尾的CRLF外,不允許出現單獨的CR或LF字元)。
請求方法(所有方法全為大寫)有多種,各個方法的解釋如下:
方法 | 描述 |
---|---|
GET | 請求獲取Request-URI所標識的資源(請求指定的頁面信息),並返回實體主體。 |
HEAD | 類似於 GET 請求,只不過返回的響應中沒有具體的內容,響應消息報頭,用於獲取報頭 |
POST | 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST 請求可能會導致新的資源的建立和/或已有資源的修改。 |
PUT | 請求伺服器存儲一個資源,從客戶端向伺服器傳送的數據取代指定的文檔的內容。 |
DELETE | 請求伺服器刪除指定的頁面。 |
CONNECT | HTTP/1.1 協議中預留給能夠將連接改為管道方式的代理伺服器。 |
OPTIONS | 請求查詢伺服器的性能,或者查詢與資源相關的選項和需求,允許客戶端查看伺服器的性能。 |
TRACE | 請求伺服器回顯伺服器收到的請求,主要用於測試或診斷。 |
PATCH | 是對 PUT 方法的補充,用來對已知資源進行局部更新 。 |
四、HTTP協議詳解之響應篇
在接收和解釋請求消息後,伺服器返回一個HTTP響應消息。HTTP響應也是由三個部分組成,分別是:狀態行、消息報頭(響應頭)、響應正文
狀態行格式:HTTP-Version Status-Code Reason-Phrase CRLF
HTTP-Version:表示請求的HTTP協議版本如/ HTTP/1.1;
Status-Code:表示伺服器發回的響應狀態代碼,如200表示請求響應成功;
Reason-Phrase:表示狀態代碼的文本描述。
狀態代碼有三位數字組成,第一個數字定義了響應的類別,且有五種可能取值,如下列表所示:
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 | 伺服器不支持請求中指明的HTTP協議版本。 |