天天看點

HTTP協定

1.學習路線

HTTP協定

2.什麼是HTTP協定

HTTP超文本傳輸協定 (HTTP-Hypertext transfer protocol),是一個屬于應用層的面向對象的協定,由于其簡捷、快速的方式,适用于分布式超媒體資訊系統。它于1990年提出,經過幾年的使用與發展,得到不斷地完善和擴充。它是一種詳細規定了浏覽器和網際網路伺服器之間互相通信的規則,通過網際網路傳送網際網路文檔的資料傳送協定。

3.HTTP協定的發展曆程

超文本傳輸協定的前身是世外桃源(Xanadu)項目,超文本的概念是泰德˙納爾森(Ted Nelson)在1960年代提出的。進入哈佛大學後,納爾森一直緻力于超文本協定和該項目的研究,但他從未公開發表過資料。1989年,蒂姆˙伯納斯˙李(Tim Berners Lee)在CERN(歐洲原子核研究委員會 = European Organization for Nuclear Research)擔任軟體咨詢師的時候,開發了一套程式,奠定了網際網路(WWW = World Wide Web)的基礎。1990年12月,超文本在CERN首次上線。1991年夏天,繼Telnet等協定之後,超文本轉移協定成為網際網路諸多協定的一分子。

當時,Telnet協定解決了一台計算機和另外一台計算機之間一對一的控制型通信的要求。郵件協定解決了一個發件人向少量人員發送資訊的通信要求。檔案傳輸協定解決一台計算機從另外一台計算機批量擷取檔案的通信要求,但是它不具備一邊擷取檔案一邊顯示檔案或對檔案進行某種處理的功能。新聞傳輸協定解決了一對多新聞廣播的通信要求。而超文本要解決的通信要求是:在一台計算機上擷取并顯示存放在多台計算機裡的文本、資料、圖檔和其他類型的檔案;它包含兩大部分:超文本轉移協定和超文本标記語言(HTML)。HTTP、HTML以及浏覽器的誕生給網際網路的普及帶來了飛躍。

4.HTTP的主要特點

1.支援用戶端/伺服器模式。

2.簡單快速:客戶向伺服器請求服務時,隻需傳送請求方法和路徑。請求方法常用的有GET、POST、HEAD等。每種方法規定了客戶與伺服器聯系的類型不同。由于HTTP協定簡單,使得HTTP伺服器的程式規模小,因而通信速度很快。

3.靈活:HTTP允許傳輸任意類型的資料對象。正在傳輸的類型由Content-Type加以标記。

4.無連接配接:無連接配接的含義是連接配接雙方在完成互動後不維持連接配接狀态,當用戶端發送新的請求後則開啟新的連接配接。

5.無狀态:HTTP協定是無狀态協定。無狀态是指協定對于事務處理沒有記憶能力。缺少狀态意味着如果後續處理需要前面的資訊,則它必須重傳,這樣可能導緻每次連接配接傳送的資料量增大。另一方面,在伺服器不需要先前資訊時它的應答就較快。

5 HTTP協定的會話方式

5.1 浏覽器與伺服器之間的通信過程要經曆四個步驟

HTTP協定

5.2 浏覽器與WEB伺服器的連接配接過程是短暫的,每次連接配接隻處理一個請求和響應。對每一個頁面的通路,浏覽器與WEB伺服器都要建立一次單獨的連接配接。

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

6.HTTP1.0和HTTP1.1的差別

在HTTP1.0版本中,浏覽器請求一個帶有圖檔的網頁,會由于下載下傳圖檔而與伺服器之間開啟一個新的連接配接;但在HTTP1.1版本中,允許浏覽器在拿到目前請求對應的全部資源後再斷開連接配接,提高了效率。

HTTP協定

7.HTTP請求

7.1 用戶端連上伺服器後,向伺服器發出擷取某個Web資源的消息,稱之為用戶端向伺服器發送了一個HTTP請求。一個完整的HTTP請求包括如下内容:

①請求行

URL位址中如果包含中文,浏覽器會自動對中文字元進行編碼之後再發送

②若幹消息頭(請求頭)

③實體内容(請求體) 有可能沒有

HTTP協定

7.2 7.2 請求方式

①HTTP中定義了7種請求方式:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT。其中最常用的是GET和POST

②GET請求

[1]從字面意思來說,GET請求是用來向伺服器端擷取資訊而發送的請求。

[2]沒有特殊設定,預設情況下浏覽器發送的都是GET請求,例如點選超連結、在浏覽器位址欄直接輸入位址通路。

[3]GET請求也可以向伺服器端發送請求參數,形式是在URL位址後面加上?,請求參數名和值用=連接配接,多個請求參數之間使用&分隔。例如:

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

需要注意的是:GET方式所能夠攜帶的資料是有限制的,其資料大小通常不能超過4K,不适于送出大量表單資料,故而在表單的送出方式中首選POST方式。

③POST請求

[1]POST請求的字面含義是向伺服器端發送資料,僅在表單中設定method=”post”時,請求方式為POST方式[另外在Ajax應用中,可以指定請求方式為POST]。

[2]POST請求會将請求參數放在請求體中,而不是URL位址後面,并且發送資料的大小是沒有限制的。

7.3 請求消息頭

①請求消息頭簡稱請求頭,用來向伺服器報告浏覽器端的一些基本資訊。

②常用請求頭

HTTP協定

7.4 7.4 請求體

①GET請求沒有請求體

②POST請求:如果form表單送出的方式為post,則表單項的資料以請求體的形式發送給伺服器,沒有大小限制

8.HTTP響應

8.1 所謂響應其實就是伺服器對請求處理的結果,或者如果浏覽器請求的直接就是一個靜态資源的話,響應的就是這個資源本身。

8.2 HTTP響應的組成

①響應狀态行:包括協定版本、響應狀态碼、響應狀态資訊

②響應消息頭:響應頭

③實體内容:響應體

HTTP協定

8.3 最常見的響應狀态碼

HTTP協定

●響應狀态碼以2開頭的通常表示成功。

●響應狀态碼以3開頭的通常表示轉移。

●響應狀态碼以4開頭的通常表示無法通路,其中包括找不到資源或沒有權限等。

●響應狀态碼以5開頭的通常表示伺服器端程式運作出錯。

8.4 響應消息頭:簡稱響應頭

●伺服器發送給浏覽器的資料,為了告訴浏覽器一些情況。

HTTP協定

8.5 響應體:伺服器給出的響應結果的主體,通常是用來在頁面上顯示的。

8.6 HTTP内容類型:目前響應體的資料類型。

①需要指出的是在浏覽器和伺服器之間傳輸的資料類型并非都是文本類型,還包括圖檔、視訊、音頻等多媒體類型。這些多媒體類型是使用MIME類型定義的。

②MIME的英文全稱是"Multipurpose Internet Mail Extensions" 多功能Internet 郵件擴充服務。MIME類型的格式是“大類型/小類型”,并與某一種檔案的擴充名相對應。

③常見的MIME類型

HTTP協定