URL
URL |
統一資源定位系統(uniform resource locator;URL)是因特網的萬維網服務程序上用於指定信息位置的表示方法。它最初是由蒂姆·伯納斯·李發明用來作為萬維網的地址。現在它已經被萬維網聯盟編制為互聯網標準RFC1738。
目錄
簡介
因特網上的可用資源可以用簡單字符串來表示,該文檔就是描述了這種字符串的語法和語義。而這些字符串則被稱為:「統一資源定位器」(URL)。這篇說明源於萬維網全球信息主動組織(World Wide Web global informationinitiative)介紹的概念。RFC1630《通用資源標誌符》描述了一些對象數據,他們自1990年起就開始使用這些對象數據。這篇URL說明符合《因特網資源定位符的功能需求(Functional Requirements for Internet Resource Locators)》中說明的需求。這篇文檔是由工程任務組織(IETF)的URI工作小組寫的。正如訪問資源的方法有很多種一樣,對資源進行定位的方案也有好幾種。URL的一般語法只是為使用協議來建立新方案提供了一個框架,當然除了已經在這篇文檔中定義過的。URL通過提供資源位置的一種抽象標誌符來對資源進行定位。系統定位了一個資源後,可能會對它進行各種各樣的操作,這些操作可以抽象為下面的幾個詞:訪問,更新,替換,發現屬性。一般來說,只有訪問方法這一項在任何URL方案中都需要進行描述。
評價
URL是由一串字符組成,這些字符可以是字母,數字和特殊符號。一個URL可以用多種方法來表現,例如:紙上的字跡,或者是用字符集編碼的八位字節序列。URL的解釋僅取決於所用字符的特性。在大多數URL方案中,都是使用URL不同部分的字符序列來代表因特網協議中所使用的八位字節序列。例如,在ftp方案中主機名,目錄名和文件名就是這樣的八位字節序列,它們用URL的不同部分代表。在這些部分里,一個八位字節數可以用這樣的字符來表示:該字符在US—ASCII[20]編碼字符集中的編碼是這個八位字節數。另外,八位字節數可以被編成如下形式的代碼:「%」後加兩個十六進制數字(來自於「0123456789ABCDEF」),這兩個十六進制數字代表了這八位字節數的值。(字符「abcdef」也可以用於十六進制編碼)。如果存在下面的情況:八位字節數在US-ASCII字符集中沒有相應的可顯示字符,或者使用相應字符會產生不安全因素,或者相應的字符被保留用於特定的URL方案的解釋,那麼它們必須被編成代碼沒有相應的可顯示字符:URL只能用US-ASCII字符編碼集中的可顯示字符表示。US-ASCII中沒有用到十六進制的八位字節80-FF,並且00-1F和7F代表了控制字符,這些字符必須進行編碼。不安全:字符不安全的原因很多。空格字符就是不安全的,因為URL在被轉錄或者被排版或者被字處理程序處理後其中重要的空格可能被忽略,而可忽略的空格卻有可能被解釋了。「<」和「>」字符也是不安全的,因為它們被用來作為URL在文本中的分隔符;而在有些系統中用引號「"」來界定URL。「#」字符也是不安全的,因為它在萬維網和其他一些系統中被用來從「片段/錨點」標誌符中界定URL,所以它通常都要被編碼。字符「%」被用來對其他字符進行編碼,它也是不安全的。其他一些字符,如:"{", "}", "|", "\", "^","~","[", "]",和"`",由於網關和其他傳輸代理有時會對這些字符進行修改,所以它們也是不安全的。必須對URL中所有不安全的字符進行編碼。例如,URL中的字符「#」即使是在通常不處理片斷或者錨點標誌符的系統也需要進行編碼,這樣如果這個URL被拷貝到使用這些標誌符的系統中,也不必改變URL編碼了。保留:許多URL方案保留了一些字符並賦予特定的含義:它們出現在URL的特定部位並表示特定的含義。如果一個字符對應的八位字節在方案中被保留了,那麼這個八位字節必須進行編碼。字符";","/", "?", ":", "@", "=" 和 "&"可能被某個方案所保留,除此之外沒有其他的保留字符。通常情況下一個八位字節被用一個字符表示後或者被編碼之後,URL的解釋都是一樣的。但這對於保留字符來說就不適用了:對某一特定方案的保留字符進行編碼可能會改變URL的語義。這樣,在URL中只有字母與數字,以及特殊字符「$-_.+!*'(),」和用作保留目的的保留字符可以不進行編碼。另一方面,不必進行編碼的字符(包括字母與數字)如果出現在URL的特定部位,只要它們不用作保留目的,則可進行編碼。[1]