URI和URL及URN的區別

2022-03-23 22:52:34 字數 3186 閱讀 7545

對於url,大家都比較熟悉,其他兩個詞就比較陌生了。uri、url和urn是識別、定位和命名網際網路上的資源的標準途徑。2023年tim berners-lee發明了網際網路(world wide web)。www被認為是全球互連的實際的和抽象的資源的集合–它按需求提供資訊實體–通過網際網路訪問。實際的資源的範圍從檔案到人,抽象的資源包括資料庫查詢。

因為要通過多樣的方式識別資源(人的名字可能相同,然而計算機檔案只能通過唯一的路徑名稱組合訪問),所以需要標準的識別www資源的途徑。為了滿足這種需要,tim berners-lee引入了標準的識別、定位和命名的途徑:uri、url和urn。

uri:uniform resource identifier,統一資源識別符號;

url:uniform resource locator,統一資源定位符;

urn:uniform resource name,統一資源名稱。

在這個體系中的uri、url和urn是彼此關聯的。uri的範疇位於體系的頂層,url和urn的範疇位於體系的底層。這種排列顯示url和urn都是uri的子範疇。

三者中,其中url和uri特別容易混淆。

url是internet上用來描述資訊資源的字串,主要用在各種www客戶程式和伺服器程式上。採用url可以用一種統一的格式來描述各種資訊資源,包括檔案、伺服器的位址和目錄等。

url的格式由下列三部分組成:

協議(或稱為服務方式);

存有該資源的主機ip位址(有時也包括埠號);

主機資源的具體位址。如目錄和檔名等。

第一部分和第二部分之間用」://」符號隔開,第二部分和第三部分用」/」符號隔開。第一部分和第二部分是不可缺少的,第三部分有時可以省略。

目前最大的缺點是當資訊資源的存放地點發生變化時,必須對url作相應的改變。因此人們正在研究新的資訊資源表示方法。

uri是以某種統一的(標準化的)方式標識資源的簡單字串,一般由三部分組成:

訪問資源的命名機制。

存放資源的主機名。

資源自身的名稱,由路徑表示。

典型情況下,這種字串以scheme開頭,語法如下:

[scheme:] scheme-specific-part

其中http是scheme,是 scheme-specific-part,並且它的scheme與scheme-specific-part被冒號分開了。

有的uri指向乙個資源的內部。這種uri以」#」結束,並跟著乙個anchor標誌符(稱為片斷標誌符)。

uri的常見問題

難以輸入,uri不必要的冗長。

莫明其妙的大寫字母。

不常見的標點符號。

在紙介質上顯示很困難,一些字元在紙上列印出來不容易辨認。

主機和埠的問題除了 scheme-specific 部分,domain 和port 也可能給使用者帶來困惑。

uri 是**ui的一部分,因此,可用的**應該滿足這些url 要求

簡單,好記的網域名稱

簡短(short)的uri

容易錄入的uri

uri 能反應站點的結構

uri 是可以被使用者猜測和hack的(也鼓勵使用者如此)

永久鏈結,cool uri don』t change

聰明的選擇uri

一定要短為了uri能被方便的錄入,寫下,拼寫和記憶,uri 要盡可能的短,根據w3c 提供的參考資料,乙個uri 的長度最好不要超過80個位元組(這並非乙個技術限制,經驗和統計提供的資料),包括schema 和host,port 等。

大小寫策略uri的大小寫策略要適當,要麼全部小寫,要麼首字母大寫,應避免混亂的大小寫組合,在unix 世界,檔案路徑隊大小寫是敏感的,而在windows 世界,則不對大小寫敏感。

允許uri管理uri對映 管理員可以重新組織伺服器上的檔案系統結構,而無需改動uri,這就需要uri和真實的伺服器檔案系統結構之間有乙個對映機制。,而不是生硬的對應。這種對映機制可以通過如下技術手段實現:

aliases ,別名,apache 上的目錄別名,iis 上的虛擬目錄

symbolic links ,符號鏈結,unix 世界的符號鏈結

標準的重定向管理員可以簡單的通過修改http 狀態**來實現伺服器檔案系統結構變更之後的uri相容,可以利用的http status code 有:

301 moved permanently ([rfc2616] section 10.3.2)

302 found (undefined redirect scheme, [rfc2616] section 10.3.3)

temporary redirect ([rfc2616] section 10.3.8)

用獨立的uri

技術無關的uri

提供動態內容服務時,應使用技術無關的uri。即uri不暴露伺服器端使用的指令碼語言,平台引擎,而這些語言,平台,引擎的變化也不會導致uri的變更。因此,sevelet,cgi-bin之類的單詞不應該出現在uri 中。

身份標誌和session 機制

使用標準的身份認證機制,而不是每個使用者乙個特定的uri

使用標準的session 機制,而不是把session id 放在uri 中使用。

內容變更時使用標準轉向

對變更的內容使用標準的重定向

對刪除的資源使用 http410

提供索引**

索引策略

content-location

content-md5

提供適當的快取資訊

快取相關的http頭

快取策略

快取生成內容 http head和http get

總結

uri 是web ui 的一部分,應當像對待**logo 和公司品牌一樣對待它

uri 是**和普通使用者之間的唯一介面,應當像對待你的商務**號碼一樣對待它

讀懂並記住上面兩句話,你下次設計uri 的時候就會給它應有的重視了。

url 應當是使用者友好的

uri 應當是可讀的

uri 應當是可**的

uri 應當是統一的

讀懂和記住上面四句話,你就知道應該設計什麼樣的uri了。

donet技術分享平台

閱讀原文

URI和URL及URN的區別

對於url,大家都比較熟悉,其他兩個詞就比較陌生了。uri url和urn是識別 定位和命名網際網路上的資源的標準途徑。1989年tim berners lee發明了網際網路 world wide web www被認為是全球互連的實際的和抽象的資源的集合 它按需求提供資訊實體 通過網際網路訪問。實際...

URI和URL及URN的區別

對於url,大家都比較熟悉,其他兩個詞就比較陌生了。uri url和urn是識別 定位和命名網際網路上的資源的標準途徑。1989年tim berners lee發明了網際網路 world wide web www被認為是全球互連的實際的和抽象的資源的集合 它按需求提供資訊實體 通過網際網路訪問。實際...

URI下的URL和URN之間的關係

在 web 應用中,uri url 經常被人混淆和無解。本文詳細描述了 uri url 以及 urn 之間的聯絡和區別 uri uniform resource identifier,統一資源識別符號 是乙個用於標識某一網際網路資源名稱的字串。該種標識允許使用者對網路中 一般指全球資訊網 的資源通過...