URI 和 URL
URI :Uniform Resource Identifier,即統一資源標志符,
URL :Universal Resource Locator,即統一資源定位符。
舉栗子,加深理解
鏈接https://github.com/favicon.ico,它是一個URI也是一個URL,唯一指向一個圖標資源,可以通過URI/URL在互聯網上找到它
URL和URI的關系
URL 是 URI 的子集,也就是說每個 URL 都是 URI,但不是每個 URI 都是 URL;URI還包括一個子類叫做URN(Uniform Resource Name),即統一資源名稱
URN的作用
URN 只命名資源而不指定如何定位資源
舉栗子
比如 urn:isbn:0451450523 指定了一本書的 ISBN,可以唯一標識這本書,但是沒有指定到哪里定位這本書
URI、URL、URN的關系圖
總結
但是在目前的互聯網,URN 的使用非常少,幾乎所有的 URI 都是 URL,所以一般的網頁鏈接我們可以稱之為 URL,也可以稱之為 URI
HTTP協議
超文本
我們在瀏覽器里看到的網頁就是超文本解析而成的,其網頁源代碼是一系列 HTML 代碼,而這些可稱為超文本
HTTP 和 HTTPS
HTTP:超文本傳輸協議
HTTP作用:從網絡傳輸超文本內容到本地瀏覽器的協議,保證高效准確的傳送超文本內容;最常用1.1版本
HTTPS:HTTP的安全版,在HTTP協議的基礎上加了一層SSL協議,SSL屬於安全協議
HTTPS的作用
- 建立一個安全傳輸通道,保證數據傳輸的安全性
- 確認網站的真實性,在瀏覽器可通過網站的證書查看它認證后的真實信息,也可以通過CA機構頒發的安全簽章來查詢
HTTP請求過程
在客戶端(PC電腦或者手機)輸入URL,回車后即可看到頁面內容,那這個過程的原理是啥呢?
- 客戶端發送請求到服務器
- 服務器接收請求,處理和解析請求
- 服務器返回對應的響應給瀏覽器
通過瀏覽器開發者工具的network看請求信息
- Name:請求名稱,一般截取URL的最后一部分內容當名稱
- Status:響應狀態碼
- Type:請求的文檔類型
- Initiator:請求源,標記請求是由哪個對象或進程發起的
- Size:有三種類型 memory cache、disk cache、資源本身大小
- Time:完成一個請求事務的所需時間(發起請求-處理請求-返回響應)
- Waterfa:頁面請求過程的可視化瀑布
memory cache、disk cache區別
memory cache:字面意思就是內存緩存,代表這個資源直接從內存獲取, 不經過服務器,當關閉當前頁面時,這個資源就被釋放掉了
disk cache:硬盤緩存,代表這個資源從本地硬盤獲取,也不經過服務器,但不會因關閉當前頁面會釋放掉,下次打開該頁面,該資源仍然顯示disk cache
細品一個請求的正確組成
首先,請求的組成部分
Request從客戶端向服務端發送,可以分為4部分:請求方法(Request Method),請求網址(Request URL),請求頭(Request Headers),請求體(Request Body)
然后,看General部分
已經包含了剛剛說的請求方法和請求網址
status code:響應狀態碼
Remote Address:遠程服務器的地址和端口
Referrer Policy:Referrer 判別策略
請求方法
請求頭
用來說明服務器要使用的附加信息,比較重要的信息有:Cookie、Refer、User-Agent
- Accept:請求報頭域,用於指定客戶端可接受哪些類型的信息。
- Accept-Language:指定客戶端可接受的語言類型。
- Accept-Encoding:指定客戶端可接受的內容編碼。
- origin:請求協議+請求域名
- referer:請求資源地址,標識這個請求是從哪個頁面;作用:服務器拿到這信息做處理,如來源統計、防盜鏈處理
- user-agent:俗稱 UA ,讓服務器識別客戶端的操作系統、系統版本、瀏覽器版本等信息。在做爬蟲時需要加上此信息,偽裝成瀏覽器
- Content-type:互聯網媒體類型,也稱MIME類型,一般叫請求的媒體類型信息;常見的有:text/html 代表 HTML 格式,image/gif 代表 GIF 圖片,application/json 代表 JSON 類型
- Cookie:存儲用戶信息,一般搭配服務端的Session使用
請求體
Query String Paramter:請求URL后面跟的請求參數,一般是GET請求的數據
Request Playload:請求數據,一般是POST請求的數據
POST請求提交數據方式和Content-Type的關系
細品響應的組成
一般分為三部分:響應狀態碼(Response Status Code)、響應頭(Response Headers)、響應體(Response Body)
響應狀態碼
響應頭
- 包含了:服務器對請求的應答信息,如 Content-Type、Server、Set-Cookie 等
- 常見響應信息有
- Date:響應產生的時間
- Last-Modified:資源的最后修改時間
- Content-Encoding:響應內容的編碼
- Content-Length:響應內容長度
- Server:包含服務器的信息,比如名稱、版本
- Content-Type:響應內容的文檔類型,如果是接口響應,通常為application/json,也可能會加charset=utf-8指定字符集
- Set-Cookie:設置 Cookies。響應頭中的 Set-Cookie 告訴瀏覽器需要將此內容放在 Cookies 中,下次請求攜帶 Cookies 請求
- Expires:指定響應的過期時間,可以讓客戶端將加載的內容更新到緩存中,如果再次訪問時,可以直接從緩存中加載,降低服務器負載,縮短壓縮時間
響應體
響應返回的內容都在響應體中,比如請求網頁時,它的響應體就是網頁的 HTML 代碼;請求一張圖片時,它的響應體就是圖片的二進制數據;請求一個查詢接口時,它響應體就是json字符串