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