1. 程式人生 > 其它 >HTML協議 客戶端資料請求篇

HTML協議 客戶端資料請求篇

技術標籤:htmlpython後端

HTTP協議簡介

HTTP協議(Hyper Text Transfer Protocol),字面意思為超文字傳輸協議。是瀏覽器與伺服器之間的傳輸協議,屬於應用層面向物件的協議。

使用者通過瀏覽器向伺服器傳送HTTP請求資訊(Request),伺服器收到請求後,向瀏覽器傳送響應資訊(Response)

我們用例子分析一下請求資訊與響應資訊具體是怎麼樣的。

HTTP請求資訊

用瀏覽器開啟網頁之後,按F12,會出現一個開發者工具介面,在裡面可以看到網頁的結構、通訊資訊等。

我們以163網易為例,在進入網易官網後,按F12,在出現的介面中選擇network,然後在左側選擇第一個檔案,之後右側就會顯示相關資訊,點選view source可以看到具體的資訊。


HTTP_1.png

我們擷取部分資訊來分析一下。

先來看請求資訊:

GET / HTTP/1.1
Host: www.163.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 LBBROWSER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://www.163.com/
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: zh-CN,zh;q=0.8

第一部分,是請求行。說明請求型別、訪問資源以及HTTP版本。在這裡是第一行。
GET表示請求型別是GET請求,/表示URL路徑,/是首頁,HTTP/1.1表示採用的HTTP協議是1.1版本.

第二部分,是請求頭部。說明伺服器要使用的附加資訊。在這裡第一行往後都屬於這一部分。
其中Host表示請求的域名。

第三部分,空行。請求頭部後面的空行是必須的。

第四部分,請求資料。這裡沒有請求資料。

HTTP響應資訊

我們再來看一下響應資訊部分:

HTTP/1.1 200 OK
Expires: Thu, 20 Sep 2018 07:39:34 GMT
Date: Thu, 20 Sep 2018 07:38:
14 GMT Server: nginx Content-Type: text/html; charset=GBK Transfer-Encoding: chunked Vary: Accept-Encoding,User-Agent,Accept Cache-Control: max-age=80 Content-Encoding: gzip X-Via: 1.1 PSgdmmsxsw84:1 (Cdn Cache Server V2.0), 1.1 PSgdzsydzd33:0 (Cdn Cache Server V2.0) Connection: keep-alive

第一部分,狀態行。說明HTTP版本、資訊狀態碼和狀態資訊。這裡是第一行。
狀態碼200表示請求成功。請求狀態的情況:
2xx: 成功--表示請求已被成功接收、理解、接受
3xx: 重新定向--要求要完成請求必須進行更進一步的操作
4xx: 客戶端錯誤--請求有語法錯誤或請求無法實現
5xx: 伺服器端錯誤--伺服器未能實現合法請求

第二部分,資訊報頭。說明客戶端要使用的一些附加資訊。第一行後面的都是。
其中Content-Type表示響應的內容,text/html表示HTML網頁。

第三部分,空行。訊息報頭後面的空行是必須的。

第四部分,響應正文。即HTML原始碼。
我們在開發者工具中點選Response,就能看到:

HTTP_2.png

HTTP工作原理

看了HTTP的請求資訊和響應資訊,我們來總結一下HTTP的工作原理。

第一步,建立連線
瀏覽器與Web伺服器的埠建立一個TCP連線。

第二步,傳送HTTP請求
瀏覽器向伺服器傳送HTTP請求,包括請求方法、路徑、域名以及其他相關Header。

第三步,接收HTTP請求並返回響應資訊
Web伺服器解析請求,並返回響應資訊,包括響應狀態、響應型別、其他相關Header以及響應正文。

第四步,釋放連線或繼續請求
若connection為close,則Web伺服器主動斷開連線;若connection為keepalive,則Web伺服器繼續等待請求。

第五步,解析響應資訊
瀏覽器解析響應資訊,包括響應頭和響應正文。最終解析HTML文字並顯示出來。

以上就是本節的全部內容,希望對你的學習有所幫助。