HTTP:簡單的學習筆記

作爲一個開發人員,如果您經常跟客戶端、服務器打交道,肯定要懂點HTTP協議內容,對於開發調試至關重要。

HTTP協議 (HyperText Transfer Protocol,超文本傳輸協議)是因特網上應用最爲廣泛的一種網絡傳輸協議,所有的WWW文件都必須遵守這個標準。它是一個基於TCP/IP通信協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)。

簡單介紹一下內容:
1. HTTP的工作原理
2. HTTP的消息結構
3. HTTP的請求方式
4. HTTP的響應信息
5. HTTP的狀態碼類
6. HTTP Content-type

1. HTTP的工作原理

HTTP協議工作於客戶端-服務端架構爲上。瀏覽器作爲HTTP客戶端通過URL向HTTP服務端即WEB服務器發送所有請求。

HTTP協議通信流程圖:

圖片來自w3c

需要注意的是:

  • HTTP無連接狀態:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。
  • HTTP媒體獨立狀態:只要客戶端和服務器知道如何處理的數據內容,任何類型的數據都可以通過HTTP發送。客戶端以及服務器指定使用適合的MIME-type內容類型。
  • HTTP無狀態:無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。

2. HTTP的消息結構

HTTP是基於客戶端/服務端(C/S)的架構模型,通過一個可靠的鏈接來交換信息,是一個無狀態的請求/響應協議。
一個HTTP”客戶端”是一個應用程序(Web瀏覽器或其他任何客戶端),通過連接到服務器達到向服務器發送一個或多個HTTP的請求的目的,和通過接收客戶端的請求並向客戶端發送HTTP響應數據。
HTTP使用統一資源標識符(Uniform Resource Identifiers, URI)來傳輸數據和建立連接。一旦建立連接後,數據消息就通過類似Internet郵件所使用的格式[RFC5322]和多用途Internet郵件擴展(MIME)[RFC2045]來傳送。

客戶端發送請求結構圖:

圖片來自w3c

服務器響應消息圖:

圖片來自w3c

3. HTTP的請求方式

常用的請求方式列表:

序號 方法 描述
1 GET 請求指定的頁面信息,並返回實體主體。
2 HEAD 類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭
3 POST 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。
4 PUT 從客戶端向服務器傳送的數據取代指定的文檔的內容。
5 DELETE 請求服務器刪除指定的頁面。
6 CONNECT HTTP/1.1協議中預留給能夠將連接改爲管道方式的代理服務器。
7 OPTIONS 允許客戶端查看服務器的性能。
8 TRACE 回顯服務器收到的請求,主要用於測試或診斷。

4. HTTP的響應信息

參數列表:

應答頭 說明
Allow 服務器支持哪些請求方法(如GET、POST等)。
Content-Encoding 文檔的編碼(Encode)方法。
Content-Length 表示內容長度。
Content-Type 表示後面的文檔屬於什麼MIME類型。
Date 當前的GMT時間。
Expires 應該在什麼時候認爲文檔已經過期,從而不再緩存它?
Last-Modified 文檔的最後改動時間。
Location 表示客戶應當到哪裏去提取文檔。
Refresh 表示瀏覽器應該在多少時間之後刷新文檔,以秒計。
Server 服務器名字。Servlet一般不設置這個值,而是由Web服務器自己設置。
Set-Cookie 設置和頁面關聯的Cookie。
WWW-Authenticate 客戶應該在Authorization頭中提供什麼類型的授權信息?

5. HTTP的狀態碼類

這是常見的HTTP狀態碼:

  • 200 - 請求成功
  • 301 - 資源(網頁等)被永久轉移到其它URL
  • 404 - 請求的資源(網頁等)不存在
  • 500 - 內部服務器錯誤

具體分類表:

分類 分類描述
1** 信息,服務器收到請求,需要請求者繼續執行操作
2** 成功,操作被成功接收並處理
3** 重定向,需要進一步的操作以完成請求
4** 客戶端錯誤,請求包含語法錯誤或無法完成請求
5** 服務器錯誤,服務器在處理請求的過程中發生了錯誤

6. HTTP Content-type

Content-Type,內容類型,一般是指網頁中存在的Content-Type,用於定義網絡文件的類型和網頁的編碼,決定瀏覽器將以什麼形式、什麼編碼讀取這個文件,這就是經常看到一些Asp網頁點擊的結果卻是下載到的一個文件或一張圖片的原因。

發佈了38 篇原創文章 · 獲贊 56 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章