HTTP協議

HTTP簡介

l       客戶端連上web服務器後,若想獲得web服務器中的某個web資源,需遵守一定的通訊格式,HTTP協議用於定義客戶端與web服務器通迅的格式。

l       WEB瀏覽器與WEB服務器之間的一問一答的交互過程必須遵循一定的規則,這個規則就是HTTP協議。

l      HTTP是hypertext transferprotocol(超文本傳輸協議)的簡寫,它是TCP/IP協議集中的一個應用層協議,用於定義WEB瀏覽器與WEB服務器之間交換數據的過程以及數據本身的格式。

l       HTTP協議的版本

       HTTP/1.0、HTTP/1.1

l      HTTP協議是學習JavaWEB開發的基石,不深入瞭解HTTP協議,就不能說掌握了WEB開發,更無法管理和維護一些複雜的WEB站點。深入理解HTTP協議,對管理和維護複雜的WEB站點、開發具有特殊用途的WEB服務器程序具有直接影響。

HTTP 1.0的會話方式

l      四個步驟:

建立連接

發送請求

回送響應

關閉連接

l      瀏覽器與WEB服務器的連接過程是短暫的,每次連接只處理一個請求和響應。對每一個頁面的訪問,瀏覽器與WEB服務器都要建立一次單獨的連接。

l      瀏覽器到WEB服務器之間的所有通訊都是完全獨立分開的請求和響應對。

HTTP 協議

瀏覽器訪問多圖網頁的過程


l      一個web頁面中,使用img標籤引用了三幅圖片,當客戶端訪問服務器中的這個web頁面時,客戶端總共會訪問幾次服務器,即向服務器發送了幾次HTTP請求。

HTTP請求消息

l       客戶端連上服務器後,向服務器請求某個web資源,稱之爲客戶端向服務器發送了一個HTTP請求。一個完整的HTTP請求包括如下內容:

l      一個請求行、若干消息頭、以及實體內容,如下所示:

請求頭

消息頭

空行

請求數據

l       請求消息的結構:

       一個請求行、若干消息頭、以及實體內容,其中的一些消息頭和實體內容都是可選的,消息頭和實體內容之間要用空行隔開。

l      舉例:

GET /books/java.html HTTP/1.1

Accept: */*

Accept-Language: en-us

Connection: Keep-Alive

Host: localhost

Referer: http://localhost/links.asp

User-Agent: Mozilla/4.0

Accept-Encoding: gzip, deflate

請求行:

l       請求行中的GET稱之爲請求方式,請求方式有:

•        POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT

•        常用的有: GET、 POST

•        用戶如沒有設置,默認情況下瀏覽器向服務器發送的都是get請求,例如在瀏覽器直接輸地址訪問,點超鏈接訪問等都是get,用戶如想把請求方式改爲post,可通過更改表單的提交方式實現。

l       不管POST或GET,都用於向服務器請求某個WEB資源,這兩種方式的區別主要表現在數據傳遞上:

•        如請求方式爲GET方式,則可以在請求的URL地址後以?的形式帶上交給服務器的數據,多個數據之間以&進行分隔,例如:

•        GET /mail/1.html?name=abc&password=xyz HTTP/1.1

•        GET方式的特點:在URL地址後附帶的參數是有限制的,其數據容量通常不能超過1K。

•        如請求方式爲POST方式,則可以在請求的實體內容中向服務器發送數據,Post方式的特點:傳送的數據量無限制。

消息頭:

l       用於HTTP請求中的常用頭

•        Accept: text/html,image/*   

•        Accept-Charset: ISO-8859-1

•        Accept-Encoding: gzip,compress

•        Accept-Language: en-us,zh-cn

•        Host: www.it315.org:80

•        If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT

•        Referer: http://www.it315.org/index.jsp

•        User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

•        Cookie

•        Connection: close/Keep-Alive  

•        Date: Tue, 11 Jul 2000 18:23:51 GMT

HTTP響應

l       一個HTTP響應代表服務器向客戶端回送的數據,它包括:

       一個狀態行、若干消息頭、以及實體內容 。

狀態行

消息頭

空行

響應數據

l      舉例:

HTTP/1.1 200 OK

Server: Microsoft-IIS/5.0

Date: Thu, 13 Jul 2000 05:46:53 GMT

Content-Length: 2291

Content-Type: text/html

Cache-control: private

 

<HTML>

<BODY>

……

狀態行:

l       狀態行

       格式: HTTP版本號 狀態碼 原因敘述<CRLF>

       舉例:HTTP/1.1 200 OK

l      狀態碼用於表示服務器對請求的處理結果,它是一個三位的十進制數。響應狀態碼分爲5類,如下所示:


典型情況

l       200(正常)

表示一切正常,返回的是正常請求結果。

l       302/307(臨時重定向)

指出被請求的文檔已被臨時移動到別處,此文檔的新的URL在Location響應頭中給出。

l       304(未修改)

表示客戶機緩存的版本是最新的,客戶機應該繼續使用它。

l       403(禁止)

服務器理解客戶端請求,但拒絕處理它。通常由於服務器上文件或目錄的權限設置所致。

l       404(找不到)

服務器上不存在客戶機所請求的資源。

l       500(內部服務器錯誤)

服務器端的CGI、ASP、JSP等程序發生錯誤。

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