9 "網址"--URI
URI和URL
-
URI:統一資源標識符(Uniform Resource Identifier)
- 有兩種形式:URL 和 URN;
- URN還在實驗階段
舉例:Web 服務器上的一個圖片資源的URI
http://www.joes-hardware.com/specials/saw-blade.gif
![]()
-
URL:統一資源定位符(Uniform Resource Locator),本質是一個字符串,作用是唯一地標記資源的位置或者名字。
-
URL是URI的一個子集
URI詳細介紹
URI的組成
scheme、host:port 、path 、query 和fragment 5個部分組成。

-
第一部分
- schema,“協議名”,包括 http,https,ftp,ldap,file,news 等方法
://是分隔符
-
第二部分
- “authority”的部分,表示資源所在的主機名
- 形式為:host:post 主機名+端口號
- 主機名,ip地址或域名
- 對于 file協議,主機名可以省略,為localhost
- 對于 http,https協議,主機名不可省略
- path 標記資源所在的位置,包含 /
-
第三部分
- 參數,用“?”開始,但是不包含“?”,表示對資源的額外要求
- 格式:“key=value”字符串,用“&”連接
-
第四部分
- 身份信息“user:passwd@” ,表示主機登錄的用戶名和密碼
- 明文展示,有安全隱患,postman測試是可使用
-
第五部分
- 片段標識符“#fragment”,它是 URI 所定位的資源內部的一個“錨點”或者說是“標簽”。
- 瀏覽器可以在獲取資源后直接跳轉到它指示的位置。
- 只給瀏覽器看,不發送給客戶端。
URI的查詢參數
- 方法1:使用“協議名 + 主機名 + 路徑”的方式
- 方法2:適用“協議名 + 主機名 + 路徑 + 參數”的方式
URI的編碼
- 只能使用 ascii 編碼
- 對于 ascii 字符集之外,及特殊字符使用 轉義,把它們轉換成與 URI 語義不沖突的形式
- 轉義規則:把字符(unicode)編碼成 utf-8,utf-8用1-4字節表示,每個字節轉換成十六進制,前面再加上一個“%”,最后把每個字節轉換后的結果拼接起來。
- 空格被轉義成“%20”
- “?”被轉義成“%3F”
- 中文、日文等則通常使用 UTF-8 編碼后再轉義,例如“銀河”會被轉義成“%E9%93%B6%E6%B2%B3”
疑問
-
HTTP 協議允許在在請求行里使用完整的 URI,但為什么瀏覽器沒有這么做呢?
- 因為請求頭字段里都有,沒有必要重復。
-
URI 的查詢參數和頭字段很相似,都是 key-value 形式,都可以任意自定義,那么它們在使用時該如何區別呢?
- query 參數針對的是資源(uri),而字段針對的是本次請求,也就是報文。
- 一個是長期、穩定的,一個是短期、臨時的。


浙公網安備 33010602011771號