HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是網際網路上應用最為廣泛的一種網路傳輸協議,所有的WWW文件都必須遵守這個標準。 HTTP是一個基於TCP/IP通信協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)。 HTTP協議工作於客戶端-服務端架構為 ...
HTTP協議
HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是網際網路上應用最為廣泛的一種網路傳輸協議,所有的WWW文件都必須遵守這個標準。
HTTP是一個基於TCP/IP通信協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)。
1. HTTP 工作原理
HTTP協議工作於客戶端-服務端架構為上。瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB伺服器發送所有請求。
Web伺服器有:Apache伺服器,IIS伺服器(Internet Information Services)等。
Web伺服器根據接收到的請求後,向客戶端發送響應信息。
HTTP預設埠號為80,但是你也可以改為8080或者其他埠。
2. HTTP三點註意事項:
1. HTTP是無連接:無連接的含義是限制每次連接只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。
2. HTTP是媒體獨立的:這意味著,只要客戶端和伺服器知道如何處理的數據內容,任何類型的數據都可以通過HTTP發送。客戶端以及伺服器指定使用適合的MIME-type內容類型。
3. HTTP是無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在伺服器不需要先前信息時它的應答就較快。
3. HTTP 消息結構
HTTP是基於客戶端/服務端(C/S)的架構模型,通過一個可靠的鏈接來交換信息,是一個無狀態的請求/響應協議。
一個HTTP"客戶端"是一個應用程式(Web瀏覽器或其他任何客戶端),通過連接到伺服器達到向伺服器發送一個或多個HTTP的請求的目的。
一個HTTP"伺服器"同樣也是一個應用程式(通常是一個Web服務,如Apache Web伺服器或IIS伺服器等),通過接收客戶端的請求並向客戶端發送HTTP響應數據。
HTTP使用統一資源標識符(Uniform Resource Identifiers, URI)來傳輸數據和建立連接。
4. 客戶端請求消息
客戶端發送一個HTTP請求到伺服器的請求消息包括以下格式:請求行(request line)、請求頭部(header)、空行和請求數據4個部分組成,下圖給出了請求報文的一般格式。
5. 伺服器響應消息
HTTP響應也由三個部分組成,分別是:狀態行、消息報頭、響應正文。
6. HTTP請求方法
根據HTTP標準,HTTP請求可以使用多種請求方法。
HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
- GET:請求指定的頁面信息,並返回實體主體。
- HEAD:類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭
- POST:向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。
- PUT:從客戶端向伺服器傳送的數據取代指定的文檔的內容。
- DELETE:請求伺服器刪除指定的頁面。
- CONNECT:HTTP/1.1協議中預留給能夠將連接改為管道方式的代理伺服器。
- OPTIONS:允許客戶端查看伺服器的性能。
- TRACE:回顯伺服器收到的請求,主要用於測試或診斷。
6.1 GET請求
瀏覽器發出的HTTP請求消息的請求方式為GET請求:
1. 在瀏覽器欄中輸入某個URL地址或單擊某網頁上的一個超鏈接如果網頁中的<form>表單元素method屬性設置為"GET"
2. 給WEB伺服器傳遞參數的格式:http://www.denx.com/index.html?name=admin&password=123
3. 註意:使用GET方式傳送的數據量一般在1KB以下。
6.2 POST請求
使用POST方式傳遞參數:
1. 表單元素method屬性設置為"POST"
2. POST傳送的數據量更大
3. POST請求主要用於想WEB伺服器提交FORM表單中的數據
7. HTTP狀態碼
當瀏覽者訪問一個網頁時,瀏覽者的瀏覽器會向網頁所在伺服器發出請求。當瀏覽器接收並顯示網頁前,此網頁所在的伺服器會返回一個包含HTTP狀態碼的信息頭(server header)用以響應瀏覽器的請求。HTTP狀態碼的英文為HTTP Status Code。
下麵是常見的HTTP狀態碼:
Ø 200 - 請求成功
Ø 301 - 資源(網頁等)被永久轉移到其它URL
Ø 404 - 請求的資源(網頁等)不存在
Ø 500 - 內部伺服器錯誤
8. HTTP狀態碼分類
HTTP狀態碼由三個十進位數字組成,第一個十進位數字定義了狀態碼的類型,後兩個數字沒有分類的作用。HTTP狀態碼共分為5種類型:
分類
HTTP狀態碼分類描述
1**
信息,伺服器收到請求,需要請求者繼續執行操作
2**
成功,操作被成功接收並處理
3**
重定向,需要進一步的操作以完成請求
4**
客戶端錯誤,請求包含語法錯誤或無法完成請求
5**
伺服器錯誤,伺服器在處理請求的過程中發生了錯誤
9. HTTP content-type
Content-Type,內容類型,一般是指網頁中存在的Content-Type,用於定義網路文件的類型和網頁的編碼,決定瀏覽器將以什麼形式、什麼編碼讀取這個文件。