02.HTTP基本原理
- 1.URI 和 URL 的區別
- 2.HTTP 和 HTTPS 的區別
- 3.請求過程
1.URI 和 URL 的區別
-
URL(Uniform Resource Locator)即-統一資源定位符
URL是用來定位和訪問互聯網上資源的獨特標識,它包括了資源的位置(如IP地址或域名)、端口號(可選)、路徑(資源在服務器上的位置)、查詢(用于傳遞參數)和片段(用于指定資源中的特定部分)。例如 http://www.example.com/index.html 是一個指向網站首頁的URL。 -
URI(Uniform Resource Identifier)即-統一資源標志符
URI是一個更廣泛的術語,它用來唯一地標識一個資源,而不涉及如何定位該資源。URI可以分為URL和URN兩種。URL是URI的一種形式,它提供了定位資源的方法,而URN則是用特定命名空間的名字來標識資源,不包含位置信息。 -
URN(Uniform Resource Name)即-統一資源名稱
URN是URI的一種形式,它通過一個全局唯一的名稱來標識資源,這個名稱在某個命名空間中是唯一的。URN的目的是提供一種方式,使得即便資源的位置發生變化,依然可以對資源進行標識。例如,urn:isbn:0-395-36341-1 是莎士比亞戲劇《羅密歐與朱麗葉》的ISBN號,這是一個典型的URN示例。
URL:提供了資源的位置和訪問方式,是URI的子集,易于人類理解和機器解析。
URI:更通用的資源標識符,可以是URL或URN,用于標識資源,但不提供定位信息。
URN:側重于通過名稱來標識資源,與資源的位置無關,常用于命名空間中標識唯一資源。
關系圖:URI = URL+URN
2.HTTP 和 HTTPS 的區別
HTTP(超文本傳輸協議)英文(Hyper Text Transfer Protocol)
- 安全性:HTTP協議傳輸的數據是未加密的,可以被第三方攔截和閱讀
- 連接狀態:HTTP連接在數據傳輸過程中是明文的,一旦連接被截斷,數據就有可能被竊取或篡改
- 端口號:80端口
- 性能:比HTTPS好
- 證書:HTTP不需要使用證書
HTTPS(超文本傳輸安全協議)英文(Hypertext Transfer Protocol Secure)
- 安全性:HTTPS通過SSL/TLS協議對數據進行加密,確保數據在傳輸過程中的機密性和完整性,防止數據被截獲或篡改
- 連接狀態:HTTPS連接在數據傳輸過程中始終保持加密狀態,即便連接在傳輸過程中被截斷,也不會影響數據的加密狀態
- 端口號:443端口
- 性能:HTTPS需要進行加密和解密操作,可能會增加服務器和客戶端的計算量,導致性能開銷
- 證書:HTTPS需要使用SSL/TLS證書來驗證服務器的身份,確保用戶連接的是合法的服務器,防止中間人攻擊
3.請求過程
打開電腦瀏覽器,訪問百度 http://www.baidu.com/,這時候鼠標右鍵并選擇 “檢查” 菜單(或直接按快捷鍵 F12),即可打開瀏覽器的開發者工具,如下圖所示:
其中各列的含義如下:
- Name:請求的名稱,一般會將 URL 的最后一部分內容當作名稱。
- Status:響應的狀態碼,這里顯示為 200,代表響應是正常的。通過狀態碼,我們可以判斷發送了請求之后是否得到了正常的響應。
- Protocol:請求的協議類型,這里 http/1.1 代表是 HTTP 1.1 版本,h2 代表 HTTP 2.0 版本。
- Type:請求的文檔類型。這里為 document,代表我們這次請求的是一個 HTML 文檔,內容就是一些 HTML 代碼。
- Initiator:請求源。用來標記請求是由哪個對象或進程發起的。
- Size:從服務器下載的文件和請求的資源大小。如果是從緩存中取得的資源,則該列會顯示 from cache。
- Time:發起請求到獲取響應所用的總時間。
- Waterfall:網絡請求的可視化瀑布流。
隨便點擊一個條目,即可看到其更詳細的信息,我們看一下比較常用的 如圖所示
通用頭 (General)
- Request URL: 請求的網址
- Request Method: 請求方法(GET,HEAD,POST,PUT,DELETE,CONNECT,OPTIONS,TRACE)
- Status Code: 請求狀態(2xx,3xx,4xx,5xx) 點擊參考 HTTP響應狀態碼一覽表
- Remote Address:HTTP請求的遠程地址,即HTTP請求的源地址
- Referrer Policy:Referer提供訪問來源的信息,告訴服務器,用戶在訪問當前資源之前的位置,發生傳場景包含:加載圖片、樣式文件、JS文件、請求。瀏覽器會將當前網址作為Referer字段,放在 HTTP 請求的頭信息發送
請求頭(Request Headers)
- Content-Length:HTTP消息長度, 用十進制數字表示的八位字節的數目,消息實體的長度,用于消息的分包和粘包處理
- Content-Type: 互聯網媒體類型 點擊參考
響應頭(Response Headers)
- Accept:請求報頭域,用于指定客戶端可接受哪些類型的信息
- Accept-Encoding:指定客戶端可接受的內容編碼
- Accept-Language:指定客戶端可接受的語言類型
- Connection:是否開啟長鏈接。close為不長連接,keep-alive保持長連接
- Cookie:維持當前訪問會話
- Host:用于指定請求資源的主機 IP 和端口號,其內容為請求 URL 的原始服務器或網關的位置。從 HTTP 1.1 版本開始,請求必須包含此內容
- Referer:是HTTP請求header的報文頭,用于指明當前流量的來源參考頁面。通過這個信息,我們可以知道訪客是怎么來到當前頁面的
- Sec-Ch-Ua:可以理解用來替代user-agent的,用sec-ch-ua可以防止泄露瀏覽器詳細信息
- Sec-Ch-Ua-Mobile:是否是移動端用戶
- Sec-Ch-Ua-Platform:表示操作系統名稱
- Sec-Fetch-Dest:表示請求的目的地,即如何使用獲取的數據
- Sec-Fetch-Mode:該請求頭表明了一個請求的模式
- Sec-Fetch-Site:請求發起者的來源與目標資源來源之間的關系
- User-Agent:簡稱 UA,它是一個特殊的字符串頭,可以使服務器識別客戶使用的操作系統及版本、瀏覽器及版本等信息。在做爬蟲時加上此信息,可以偽裝為瀏覽器;如果不加,很可能會被識別為爬蟲