URI(Uniform Resource Identifier)和URL(Uniform Resource Locator)這兩個概念在前面的學(xué)習(xí)中出現(xiàn)了很多次,但我一直沒有理清兩者的差別,現(xiàn)在來好好聊一聊。
URI是根據(jù)某個協(xié)議方案表示的資源定位符,協(xié)議方案指的是訪問資源所訪問的協(xié)議類別,http就是其中一種協(xié)議,此外,標準協(xié)議還有ftp,mailto,telnet,file等30多種。
URI和URL的差別在于identifer和locator上,identifer意為標記,即告訴你有這么一個東西名字叫做什么。而locator意為查詢地址,它不僅能告訴你有一個東西叫什么,還能精確定位到具體位置。所以,URL是URI的子集,URI是以一種抽象的,高層次概念定義統(tǒng)一資源標識,而URL和URN則是具體的資源標識的方式。URI的子集除了URL以外,還有URN(Uniform Resource Name),但是并未大規(guī)模的應(yīng)用場景。
所以,用URL來替代URI是毫無問題的。這是一個標準的URL結(jié)構(gòu):

- 協(xié)議方案名:http,ftp,file,mailto.....;
- 登錄信息:如果網(wǎng)頁需要認證時,需要填寫該參數(shù),所以是可選項。實際上,這種登錄方式基本上不用,把賬號密碼寫在URL不是等著別人來盜用么- -;
- 服務(wù)器地址:可以使IP地址形式,也可以是能被DNS解析為IP地址的域名形式;
- 端口號:指定服務(wù)器連接的端口號,也選填,若不填則指向本協(xié)議的默認端口號;
- 帶層次的文件路徑:獲取資源在服務(wù)器中的具體地址;
- 查詢字符串:針對已指定路徑的資源,可使用查詢字符串來獲取想要的參數(shù),此項也是可選項;
- 片段標識符:又名hash,來標記已獲取資源中的子資源(在文檔中的某個位置)。