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. 狀態碼的列表

 

 

 

 

Tags: