HTTP 協議
一、簡介
1. 基於TCP/IP通信協議
2. 瀏覽器作為HTTP客戶端通過URL向HTTP服務端即WEB服務器發送所有請求
3. HTTP默認端口號為80
4. HTTP是無連接,限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開連接。
5. HTTP是無狀態,是指協議對於事務處理沒有記憶能力
6. HTTP協議通信流程:
二、消息結構
1. 一個HTTP”客戶端”是一個應用程序(Web瀏覽器或其他任何客戶端),通過連接到服務器達到向服務器發送一個或多個HTTP的請求的目的。
2. 一個HTTP”服務器”同樣也是一個應用程序(通常是一個Web服務,如Apache Web服務器或IIS服務器等),通過接收客戶端的請求並向客戶端發送HTTP響應數據。
3. HTTP使用統一資源標識符(Uniform Resource Identifiers, URI)來傳輸數據和建立連接。
4. 客戶端請求消息:
請求消息包括以下格式:請求行(request line)、請求頭部(header)、空行和請求數據四個部分組成
5. 服務器響應消息:
HTTP響應也由四個部分組成,分別是:狀態行、消息報頭、空行和響應正文
三、請求方法
四、響應頭信息
- Allow : 服務器支持哪些請求方法(如GET、POST等)。
- Content-Encoding : 文檔的編碼(Encode)方法。
- Content-Length : 表示內容長度。
- Content-Type : 表示後面的文檔屬於什麼MIME類型。Servlet默認為text/plain,但通常需要顯式地指定為text/html。
- Date : 當前的GMT時間。
- Expires : 應該在什麼時候認為文檔已經過期,從而不再緩存它?
- Last-Modified : 文檔的最後改動時間。
- Location : 表示客戶應當到哪裡去提取文檔。
- Refresh : 表示瀏覽器應該在多少時間之後刷新文檔,以秒計。這種功能通常是通過設置HTML頁面HEAD區的<META HTTP-EQUIV=”Refresh” CONTENT=”5;URL=//host/path”>實現.
- Server : 服務器名字。
- Set-Cookie : 設置和頁面關聯的Cookie。
- WWW-Authenticate : 客戶應該在Authorization頭中提供什麼類型的授權信息?
五、狀態碼
當瀏覽者訪問一個網頁時,瀏覽者的瀏覽器會向網頁所在服務器發出請求。當瀏覽器接收並顯示網頁前,此網頁所在的服務器會返回一個包含HTTP狀態碼的信息頭(server header)用以響應瀏覽器的請求。
1. 常見的狀態碼
- 200 – 請求成功
- 301 – 資源(網頁等)被永久轉移到其它URL
- 404 – 請求的資源(網頁等)不存在
- 500 – 內部服務器錯誤
2. 狀態碼的分類
狀態碼由三個十進制數字組成,第一個十進制數字定義了狀態碼的類型,後兩個數字沒有分類的作用,狀態碼一共有五類:
- 1 開頭 : 信息,服務器收到請求,需要請求者繼續執行操作
- 2 開頭 : 成功,操作被成功接收並處理
- 3 開頭 : 重定向,需要進一步的操作以完成請求
- 4 開頭 : 客戶端錯誤,請求包含語法錯誤或無法完成請求
- 5 開頭 : 服務器錯誤,服務器在處理請求的過程中發生了錯誤
3. 狀態碼的列表