HTML協議 客戶端資料請求篇
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工作原理
看了HTTP的請求資訊和響應資訊,我們來總結一下HTTP的工作原理。
第一步,建立連線。
瀏覽器與Web伺服器的埠建立一個TCP連線。
第二步,傳送HTTP請求。
瀏覽器向伺服器傳送HTTP請求,包括請求方法、路徑、域名以及其他相關Header。
第三步,接收HTTP請求並返回響應資訊。
Web伺服器解析請求,並返回響應資訊,包括響應狀態、響應型別、其他相關Header以及響應正文。
第四步,釋放連線或繼續請求。
若connection為close,則Web伺服器主動斷開連線;若connection為keepalive,則Web伺服器繼續等待請求。
第五步,解析響應資訊。
瀏覽器解析響應資訊,包括響應頭和響應正文。最終解析HTML文字並顯示出來。
以上就是本節的全部內容,希望對你的學習有所幫助。