http協議簡述

1、HTTP協議概述

       HTTP是一個簡單的請求-響應協議,屬於應用層的面向對象的協議,因爲其簡捷、快速的方式,適用於分佈式超媒體信息系統。它一般運行在TCP之上。它指定了客戶端發送給服務器什麼樣的消息獲得什麼樣的響應。ajax

2、HTTP協議的主要特色可歸納以下:

一、B/S結構(Browser/Server,瀏覽器/服務器模式),這種模式統一了客戶端,將系統功能實現的核心部分集中到服務器上,簡化了系統的開發、維護和使用。客戶機上只要安裝一個瀏覽器就能夠訪問服務器。瀏覽器

二、簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法經常使用的有GET、POST。每種方法規定了客戶與服務器聯繫的類型不一樣。因爲HTTP協議簡單,使得HTTP服務器的程序規模小,於是通訊速度很快。緩存

三、靈活:HTTP容許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。服務器

四、無鏈接:每次鏈接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開鏈接。採用這種方式能夠節省傳輸時間。併發

五、無狀態:HTTP無狀態協議,是指協議對於事務處理沒有記憶能力。缺乏狀態意味着若是後續處理須要前面的信息,則它必須重傳,這樣可能致使每次鏈接傳送的數據量增大。另外一方面,在服務器不須要先前信息時它的應答就較快。分佈式

3、HTTP協議詳解之請求篇

http請求由三部分組成,分別是:請求行、消息報頭(請求頭)、請求正文(請求內容)。post

一、請求行以一個方法符號開頭,以空格分開,後面跟着請求的URI和協議的版本。性能

格式以下:Method Request-URI HTTP-Version CRLF
Method:表示請求方法如GET,POST等;測試

Request-URI:是一個統一資源標識符如www.baidu.com;ui

HTTP-Version:表示請求的HTTP協議版本如/ HTTP/1.1 

CRLF:表示回車和換行(\r\n 除了做爲結尾的CRLF外,不容許出現單獨的CR或LF字符)。

二、請求頭

accept:瀏覽器經過這個頭告訴服務器,它所支持的數據類型。
Accept-Charset:瀏覽器經過這個頭告訴服務器,它支持哪一種字符集。
Accept-Encoding:瀏覽器經過這個頭告訴服務器,支持的壓縮格式。
Accept-Language:瀏覽器經過這個頭告訴服務器,它的語言環境。
Host:瀏覽器經過這個頭告訴服務器,想訪問哪臺主機。
If-Modified-Since:瀏覽器經過這個頭告訴服務器,緩存數據的時間。
Referer:瀏覽器經過這個頭告訴服務器,客戶機是哪一個頁面來的 防盜鏈。
Connection:瀏覽器經過這個頭告訴服務器,請求完後是斷開連接仍是何持連接。
X-Requested-With:XMLHttpRequest 表明經過ajax方式進行訪問。
User-Agent:請求載體的身份標識。

三、請求方法(全部方法全爲大寫)有多種,各個方法的解釋以下:

方法 描述
GET 請求獲取Request-URI所標識的資源(請求指定的頁面信息),並返回實體主體。
HEAD 相似於 GET 請求,只不過返回的響應中沒有具體的內容,響應消息報頭,用於獲取報頭
POST 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST 請求可能會致使新的資源的創建和/或已有資源的修改。
PUT 請求服務器存儲一個資源,從客戶端向服務器傳送的數據取代指定的文檔的內容。
DELETE 請求服務器刪除指定的頁面。
CONNECT HTTP/1.1 協議中預留給可以將鏈接改成管道方式的代理服務器。
OPTIONS 請求查詢服務器的性能,或者查詢與資源相關的選項和需求,容許客戶端查看服務器的性能。
TRACE 請求服務器回顯服務器收到的請求,主要用於測試或診斷。
PATCH 是對 PUT 方法的補充,用來對已知資源進行局部更新 。

 

4、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協議版本。

二、消息報頭(常見響應頭)

Location:服務器經過這個頭,來告訴瀏覽器跳到哪裏
Server:服務器經過這個頭,告訴瀏覽器服務器的型號
Content-Encoding:服務器經過這個頭,告訴瀏覽器,數據的壓縮格式
Content-Length:服務器經過這個頭,告訴瀏覽器回送數據的長度
Content-Language:服務器經過這個頭,告訴瀏覽器語言環境
Content-Type:服務器經過這個頭,告訴瀏覽器回送數據的類型
Refresh:服務器經過這個頭,告訴瀏覽器定時刷新
Content-Disposition:服務器經過這個頭,告訴瀏覽器如下載方式打數據
Transfer-Encoding:服務器經過這個頭,告訴瀏覽器數據是以分塊方式回送的
Expires:-1 控制瀏覽器不要緩存
Cache-Control:no-cache
Pragma:no-cache

三、響應體:根據客戶端指定的請求信息,發送給客戶端的指定數據

相關文章
相關標籤/搜索