解析URI是一個(gè)有意思的東西,之前沒(méi)有意識(shí)到,原來(lái)這東西也可以這么復(fù)雜。
URI
在維基百科中對(duì)于URI的解釋是這樣子的:
復(fù)制代碼代碼如下:
在計(jì)算機(jī)術(shù)語(yǔ)中,統(tǒng)一資源標(biāo)識(shí)符(Uniform Resource Identifier,或URI)是一個(gè)用于標(biāo)識(shí)某一互聯(lián)網(wǎng)資源名稱(chēng)的字符串。 該種標(biāo)識(shí)允許用戶(hù)對(duì)網(wǎng)絡(luò)中(一般指萬(wàn)維網(wǎng))的資源通過(guò)特定的協(xié)議進(jìn)行交互操作。URI由包括確定語(yǔ)法和相關(guān)協(xié)議的方案所定義。
引自網(wǎng)絡(luò)上對(duì)于URI組成的解釋?zhuān)@些可以在稍后對(duì)于URI的解析中看出來(lái)。
URI一般由三部分組成:
1.訪(fǎng)問(wèn)資源的命名機(jī)制。
2.存放資源的主機(jī)名。
3.資源自身的名稱(chēng),由路徑表示。
或者可以說(shuō)是這樣子,兩者看上去是一致的。
URL的格式由下列三部分組成:
1.協(xié)議(或稱(chēng)為服務(wù)方式)
2.存有該資源的主機(jī)IP地址(有時(shí)也包括端口號(hào))
3.主機(jī)資源的具體地址。,如目錄和文件名等
URI解析
復(fù)制代碼代碼如下:
“解析”一個(gè)URI意味著將一個(gè)相對(duì)URI引用轉(zhuǎn)換為絕對(duì)形式,或者通過(guò)嘗試獲取一個(gè)可解引URI或一個(gè)URI引用所代表的資源來(lái)解引用這個(gè)URI。文檔處理軟件的“解析”部分通常同時(shí)提供這兩種功能。
Javascript URI解析
簡(jiǎn)單地以博客中的搜索JS為例,下面就是其的URL,
http://www.survivalescaperooms.com/search/?q=js&type=
然后便有了
復(fù)制代碼代碼如下:
var parser = document.createElement('a');
parser.href = "http://www.survivalescaperooms.com/search/?q=js&type="
我們便可以知道其的協(xié)議、端口號(hào)、主機(jī)、具體地址等
復(fù)制代碼代碼如下:
parser.protocol;
parser.host;
parser.pathname;
parser.search;
返回的結(jié)果便是
復(fù)制代碼代碼如下:
protocol:http
host:www.survivalescaperooms.com
pathname:/search/
search:?q=js&type=
上面的結(jié)果加出來(lái),便是一個(gè)完整的URI。只是對(duì)于parser.search這部分不是很理解,對(duì)于?號(hào)而言,應(yīng)該是參數(shù),用于搜索的參數(shù)。
如果是對(duì)就于一個(gè)郵件的URI來(lái)說(shuō),假設(shè)URI是
復(fù)制代碼代碼如下:
mailto:h@vevb.com?subject=hello
那么
復(fù)制代碼代碼如下:
var parser = document.createElement('a');
parser.href = "mailto:h@vevb.com?subject=hello";
> parser.protocol
"mailto:"
> parser.pathname
"h@vevb.com"
> parser.search
"?subject=hello"