URL、URI與URN 區別
比較相似的概念往往難以區分,或者對它們沒有足夠了解的話可能出現錯用的現象。
標題中的三個概念無論從名稱還是內容上都非常相似,由此給很多朋友帶來一些困惑。
本文將詳細介紹一下它們之間的區別和聯絡,希望能夠給需要的朋友來一定的幫助。
一.URL:
此概念大家應該非常熟悉,對它的第一印象就是"網址",但它並不僅僅表示網址。
URL是Uniform Resource Locator,翻譯成中文是統一資源定位的意思,用來唯一的標識網際網路上對應資源。
既然,它可以準確定位資源的位置,於是可以通過它準確找到對應的資源。
語法結構:
[HTML] 純文字檢視 複製程式碼協議型別:[//[訪問資源需要的憑證資訊@]伺服器地址[:埠號]][/資源層級UNIX檔案路徑]檔名[?查詢][#片段ID]
特別說明,URL不僅僅標識網址,網址僅僅是URL的自己,也就是說超文字傳輸協議是URL的一種。
關於超文字傳輸協議(http或者https)可以參閱URL 結構分析一章節。
下面舉一個非超文字傳輸協議的統一資源定位符,結構如下:
[HTML] 純文字檢視 複製程式碼jdbc:datadirect:oracle://myserver:1521;sid=testdb
當前專業文件,逐漸使用URI替代URL,所以可能將來URL的使用頻率會越來越低。
二.URN:
與URL相比,它的URN的出現頻率非常的低,可能以後會更低。
也是因為在正規的文件,越來越多的被URI所替代。
URN是Uniform Resource Name,翻譯成中文是統一資源名稱。
與URL類似,能夠唯一標識一個資源,但只出給資源唯一的命名,沒有給出資源的地址。
它的目的是期望對資源提供持久唯一的命名標識,並不對資源是否可用和資源的位置負責。
語法結構:
[HTML] 純文字檢視 複製程式碼urn:<NID>:<NSS>
解析如下:
(1)."urn:"大小寫不敏感。
(2).<NID>:名稱空間標識,決定了如何解釋<NSS>的句法。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼urn:ISBN 0-486-27557-4
上面URN可以唯一標識一本書,但是你不能以此為依據找到這本書的位置,以及此書當前是否依然有資源。
三.URI:
URI這個名稱以後的使用頻率會越來越高,在對其介紹之前首先看一個圖示:
圖示分析如下:
(1).URL和URN是URI的子集。
(2).URL和URN一定是URI。
URI是Uniform Resource Identifier的簡寫形式,翻譯成中文就是統一資源識別符號。
當前正式文件,統一將URL和URN都稱作為URI,所以會在越來越多的文件中看到URI的身影。
四.三者的區別:
上面已經對三個概念進行了介紹,它們的區別應該很明顯了。
為了更加容易理解,下面再用更加通俗的語言對它們進行一下闡述,希望能夠對大家有進一步的幫助。
URL為資源提供了訪問機制,能夠通過它找到對應的資源,例如利用網址可以訪問一個頁面。
URN目的是為了唯一標識某一個資源,但是僅命名,並沒有提供訪問機制。
舉個例子,URN就如同一個車輛的車牌號碼,通過此號碼你能唯一確定一輛車,但是你並不能知道此車當前在什麼位置,而URL則如同GPS或者北斗定位,可以確定車當前的位置。URI則沒有什麼可說的,URL和URN是它的子集,以後正式文件它的出現頻率會越來越高。
相關文章
- 一次搞懂 URI、URL、URN
- url和uri區別
- uri和url的區別
- url和uri的區別
- HTTP協議中URI和URL區別HTTP協議
- 【思考】URI和URL的區別?以及URL的結構
- 女朋友看了會生氣的回答 URI和URL有什麼區別?
- WPF image via web url or uriWeb
- 前端基礎迴歸-URI和URL前端
- [前端 · 面試 ]HTTP 總結(十二)—— URL 和 URI前端面試HTTP
- 【前端 · 面試 】HTTP 總結(十二)—— URL 和 URI前端面試HTTP
- URI(統一資源識別符號)符號
- ??與?:的區別
- URL URI傻傻分不清楚,dart告訴你該怎麼用Dart
- mouseenter與mouseover區別
- currentTarget與target區別
- mouseout與mouseleave區別
- classList與className區別
- innerText與textContent區別
- GET與POST區別
- let與const區別
- NIO與IO區別
- 區別mouseover與mouseenter?
- ApplicationContext 與 BeanFactory 區別APPContextBean
- setInterval()與setTimeout()區別
- match()與exec()區別
- localStorage與sessionStorage 區別Session
- showModal()與show() 區別
- <section>與<article> 區別
- onmouseover與onmouseenter區別
- offset與style區別
- cellpadding與cellspacing 區別padding
- animation與transition 區別
- encodeURI與encodeURIComponent區別
- JavaScript與ECMAScript 區別JavaScript
- FragmentPagerAdapter與FragmentStatePagerAdapter區別FragmentAPT
- put與putIfAbsent區別
- JavaScript 與TypeScript區別JavaScriptTypeScript