URL與URI的關係,URI解釋

 URI,也就是統一資源標識符(Uniform Resource Identifier)。因爲它經常出現在瀏覽器的地址欄裏,所以俗稱爲“網絡地址”,簡稱“網址” URI是用來標記服務器上的資源,區分“這個”資源和“那個”資源

嚴格地說,URI 不完全等同於網址,它包含有 URL 和 URN 兩個部分,在 HTTP 世界裏用的網址實際上是 URL——統一資源定位符(Uniform Resource Locator)。但因爲 URL 實在是太普及了,所以常常把這兩者簡單地視爲相等

URI 的格式

  1. URI 本質上是一個字符串,這個字符串的作用是唯一地標記資源的位置或者名字。
  2. 它不僅能夠標記萬維網的資源,也可以標記其他的,如郵件系統、本地文件系統等任意資源。而“資源”既可以是存在磁盤上的靜態文本、頁面數據,也可以是由 Java、PHP 提供的動態服務。
  3.  URI 最常用的形式,由 scheme、host:port、path 和 query 四個部分組成,但有的部分可以視情況省略。

URI 的基本組成URI

  1. 第一個組成部分叫 scheme,翻譯成中文叫“方案名”或者“協議名”,表示資源應該使用哪種協議來訪問。
  2. 最常見的當然就是“http”了,表示使用 HTTP 協議。另外還有“https”,表示使用經過加密、安全的 HTTPS 協議。此外還有其他不是很常見的 scheme,例如 ftp、ldap、file、news 等。
  3. 在 scheme 之後,必須是三個特定的字符“://”,它把 scheme 和後面的部分分離開。。
  4. 在“://”之後,是被稱爲“authority”的部分,表示資源所在的主機名,通常的形式是“host:port”,即主機名加端口號。
  5. 主機名可以是 IP 地址或者域名的形式,必須要有,否則瀏覽器就會找不到服務器。但端口號有時可以省略,瀏覽器等客戶端會依據 scheme 使用默認的端口號,例如 HTTP 的默認端口號是 80,HTTPS 的默認端口號是 443。
  6. 有了協議名和主機地址、端口號,再加上後面標記資源所在位置的 path,瀏覽器就可以連接服務器訪問資源了。

URI 的查詢參數

  1. 使用“協議名 + 主機名 + 路徑”的方式,已經可以精確定位網絡上的任何資源了。但這還不夠,很多時候我們還想在操作資源的時候附加一些額外的修飾參數
  2. 僅用“協議名 + 主機名 + 路徑”的方式是無法適應這些場景的,所以 URI 後面還有一個“query”部分,它在 path 之後,用一個“?”開始,但不包含“?”,表示對資源附加的額外要求。這是個很形象的符號,比“://”要好的多,很明顯地表示了“查詢”的含義。
  3. 查詢參數 query 有一套自己的格式,是多個“key=value”的字符串,這些 KV 值用字符“&”連接,瀏覽器和服務器都可以按照這個格式把長串的查詢參數解析成可理解的字典或關聯數組形式。

URI 的編碼

  1. 看到了,在 URI 裏只能使用 ASCII 碼,但如果要在 URI 裏使用英語以外的漢語、日語等其他語言該怎麼辦呢?
  2. 還有,某些特殊的 URI,會在 path、query 裏出現“@&?"等起界定符作用的字符,會導致 URI 解析錯誤,這時又該怎麼辦呢?
  3. 所以,URI 引入了編碼機制,對於 ASCII 碼以外的字符集和特殊字符做一個特殊的操作,把它們轉換成與 URI 語義不衝突的形式。這在 RFC 規範裏稱爲“escape”和“unescape”,俗稱“轉義”。
  4. URI 轉義的規則有點“簡單粗暴”,直接把非 ASCII 碼或特殊字符轉換成十六進制字節值,然後前面再加上一個“%”。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章