URL, URI 和 URN 之間的區別
英文原文:What's the difference between a URI and a URL?
URI 標識一個事物 , URL 定位一個事物;然而,位置同樣可以標識一個事物,所以,每個 URL 都是一個 URI,但一個 URI 并不一定是一個 URL。
舉例說明
- 羅杰·佩特
這是我的名字,這是一個標識。它就像一個 URI,但它不是一個 URL,因為,它不能告訴你任何關于我的位置或如何找到我的信息。在我說的這種情形中,這個名字在美國有可能指的是至少不同的 5 個人。
- 巴哈馬國拿騷市西海岸街 4914 號
這是一個位置,它也是一個物理位置的標識。它既像一個 URL,也像一個 URI (因為所有的 URL 都是 URI),它能間接的標識我為“xxx 地的居民”。這種情形下,它可以唯一的標識我,但如果我有了一個室友,這種情況就會發生變化。
我說“像”,是因為,這兩個例子在語法上是不符合要求的。
常見錯誤
來自維基百科:
在計算機科學里,URL (Uniform Resource Locator) 是 URI (Uniform Resource Identifier) 的子集,用來標識一個唯一有效的資源,人們可以通過它來獲取這個資源。 在很多常見的使用方法里,在很多技術文檔和口頭討論中,它通常被不正確的當成了 URI 的同義詞…
因為這種常見的混淆,很多產品和文檔中本來應該使用這個時卻錯誤的使用了那個,他們按自己的理解來使用這些術語,或者把它們等同對待。
URN
我的名字,羅杰·佩特,類似于一個 URN ,不同的是 URN更有規則,特意用來表示即在空間上又在時間上的唯一性。
因為我的名字很可能和其他人重名,它并不是全球唯一的,不適合做 URN。然而,即使是沒有其他家庭使用這個名字,但我的名字是從祖上繼承下來的,所以它在時間范圍里仍然不能唯一。即使我的名字跟祖上不一樣,但我的后代也可能使用這個名字,它仍然不適合作為一個 URN。
URN 在嚴格的唯一性約束方面有別于 URL,但它們卻都是使用相同的 URI 語法。