HTTP的發展是全球資訊網協會(World Wide Web Consortium)和Internet工作小組(Internet Engineering Task Force)合作的結果,(他們)最終發布了一系列的RFC,其中最著名的就是RFC 2616。RFC 2616定義了HTTP協議的我們今天普遍使用的一個版本——HTTP 1.1。
HTTP是一個用於在用戶端和伺服器間請求和應答的協議。一個HTTP的用戶端,諸如一個web瀏覽器,通過建立一個到遠程主機特殊連接埠(預設連接埠為80)的串連,初始化一個請求。一個HTTP伺服器通過監聽特殊連接埠等待用戶端發送一個請求序列, 就像“GET / HTTP/1.1”(用來請求網頁伺服器的預設頁面),有選擇的接收像email一樣的MIME訊息,此訊息中包含了大量用來描述請求各個方面的資訊頭序列,響應一個選擇的保留資料主體。接收到一個請求序列後(如果要的話,還有訊息),伺服器會發回一個回複,如“200 OK”,同時發回一個它本報的訊息,此訊息的主體可能是被請求的檔案、錯誤訊息或者其他的一些資訊。
HTTP報文由從客戶機到伺服器的請求和從伺服器到客戶機的響應構成。請求報文格式如下:
請求行——通用資訊頭——要求標頭——實體頭——報文主體
請求行以方法欄位開始,後面分別是 URL 欄位和 HTTP 協議版本欄位,並以 CRLF 結尾。SP 是分隔字元。除了在最後的 CRLF 序列中 CF 和 LF 是必需的之外,其他都可以不要。有關通用資訊頭,要求標頭和實體頭方面的具體內容可以參照相關檔案。
應報文格式如下:
狀態行——通用資訊頭——回應標頭——實體頭——報文主體
狀態代碼元由3位元字組成,表示請求是否被理解或被滿足。原因分析是對原文的狀態代碼作簡短的描述,狀態代碼用來支援自動操作,而原因分析用來供使用者使用。客戶機無需用來檢查或顯示文法。有關通用資訊頭,回應標頭和實體頭方面的具體內容可以參照相關檔案。
HTTP/1.1協議中共定義了八種方法來指示確認的資源執行所需的行為:
l OPTIONS——返回伺服器針對特定資源所支援的HTTP要求方法,這可以用來檢查網路伺服器的功能。
l HEAD——向伺服器索要與GET請求相一致的響應,只不過響應體將不會被返回。這一方法可以在不必傳輸整個響應內容的情況下,就可以擷取包含在響應訊息頭中的元資訊。
l GET——向特定的資源發出請求。GET方法不應當被用於產生副作用的操作中。
l POST——向指定資源提交資料進行處理請求。資料被包含在請求體中,POST請求可能會導致新的資源的建立和/或已有資源的修改。
l PUT——向指定資源位置上傳其最新內容。
l DELETE——刪除指定資源。
l TRACE——回顯伺服器收到的請求。
l CONNECT ——HTTP/1.1協議中預留給能夠將串連改為管道方式的Proxy 伺服器。
所有 HTTP 響應的第一行都是狀態行, 依次是當前 HTTP 版本號碼,3位元字組成的狀態碼,以及描述狀態的短語,彼此由空格分隔。狀態碼的第一個數字代表當前響應的類型:
l 1xx 訊息——請求已被伺服器接收,繼續處理
l 2xx 成功——請求已成功被伺服器接收、理解、並接受
l 3xx 重新導向——需要後續操作才能完成這一請求
l 4xx 請求錯誤——請求含有詞法錯誤或者無法被執行
l 5xx 伺服器錯誤——伺服器在處理某個正確請求時發生錯誤
常用的 HTTP 狀態代碼:
l 200 OK——
l 302 Found——
l 304 Not Modified——
l 401 Unauthorized——
l 403 Forbidden——
l 404 Not Found——
l 500 Internal Server Error——
常用的回應標頭:
Server——Web 服務器的名稱和版本。
Date——當前日期(格林威治標準時間)。
Last-modified——上次修改文檔的日期。
Expires——文檔到期的日期。
Content-length——隨附資料的長度(以位元組為單位)。
Content-type ——隨附資料的MIME 類型。
WWW-authenticate——在驗證時使用,其中的內容用於告訴客戶機軟體需要提供哪些驗證資訊(例如使用者名稱和密碼)。