對於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,統一資源識別符號 是乙個用於標識某一網際網路資源名稱的字串。該種標識允許使用者對網路中 一般指全球資訊網 的資源通過...