言簡意賅,url幹嘛的?


一、url幹嘛的

我們把互聯網比作一個巨大的城市,那麼互聯網資源就是其中的電影院、便利店、火車站,爲我們提供各種各樣的服務。那我們怎樣才能找到這座城市中的某個電影院呢?當然是要有地址,類比一下,url在互聯網中也是起到這個作用,方便你在海量的互聯網資源中找到特定的資源。

二、url怎麼看

比如說這麼一段,http://new.qq.com/omn/20191203/20191203A063FK00.html。

我們要分爲三段去看。

1.第一部分是url的方案。即告訴web客戶端怎樣訪問資源,這個例子中使用的是http協議。
2.第二部分指的是url的服務器位置。即告訴web客戶端資源在哪裏。
3.第三部分是資源路徑。路徑說明了請求的是服務器上哪個特定的資源。
在這裏插入圖片描述

三、url的語法

url提供了一種定位互聯網上任意資源的手段,隨着訪問方案的不同,url語法也稍有不同。

通常由9個部分組成。

組件 描述 默認值
方案 使用哪種協議
用戶 某些方案訪問時需要的用戶名 匿名
密碼 用戶名後可能要包含密碼 E-mail地址
主機 服務器主機名或IP地址
端口號 服務器正在監聽的端口號 特有(http默認80)
路徑 服務器上資源的本地名
參數 某些方案會用這個組件來指定參數
查詢 某些方案會用這個組件傳遞參數。這個組件沒有通用格式,且用“?”將其與URL的其他組件分割開來
片段 一小片或者一部分資源的名字。

其中最常用的是“方案”、“主機”、“路徑”、“查詢”這四個組件。

例如,http://hm.tmall.com/shop/view_shop.htm?user_number_id=3676232520,方案是http;主機是hm.tmall.com;路徑是/shop/view_shop.htm;查詢是user_number_id=3676232520。

1.方案

用什麼協議。方案實際上是規定如何訪問指定資源的標識符,它會告訴負責解析url的應用程序應該使用什麼協議。

方案(1)必須以一個字母符號開始,由第一個“:”符號將其與url的其他部分分割開來;(2)大小寫不敏感,“http://www.taobao.com/”與“HTTP://www.taobao.com/”是等價的。

2.主機

要想在互聯網上找到資源,應用程序要知道在什麼地方可以找到能對目標資源進行訪問的服務器。

主機組件標識了互聯網上能夠訪問資源的宿主機器。可以用主機名或者IP地址來表示主機名。比如,下面兩個url都指向了同一個資源。

https://www.taobao.com/
https://140.205.94.189/

3.路徑

資源位於服務器的什麼地方。url的路徑組件說明了資源位於服務器的什麼地方。

4.查詢

我們使用get提交方式的時候,這個組件是最常見的,還是剛纔的例子,在“”之後的就是查詢組件。
http://hm.tmall.com/shop/view_shop.htm?user_number_id=3676232520。

當有多個查詢字符串的時候我們用“&”分割一下:http://sony.tmall.com/p/rd512561.htm?spm=a21bo.2017.201863-5.d2.5af911d9IPnDyn&scm=1049.lyg_turing_-1_182.129363.129363-THJH_189962&turing_bucket=1&lygClk=1&impid=eyN0WcEagr8

四、url快捷方式

1.絕對url

上面我們介紹到的都是決定url,即包含訪問資源所需的全部信息

2.相對url

相對url是url的一種便捷縮略記法。使用到html開發前端頁面的使用,這種寫法非常常見。例如:

<img src="../lib/images/top12.jpg" style="height:100%;position: relative;margin: 0px; ">

使用相對url寫法,開發人員可以省略url中的方案、主機和其他組件。這寫組件可以從它們所屬資源的基礎url中推到出來。

3.自動擴展url

一些瀏覽器會在用戶提交url之後,或者在用戶輸入的時候嘗試自動擴展url。這就爲用戶提供了一條便捷之路,用戶不需要輸入完成的url,因爲瀏覽器會自動擴展。

主機名擴展
例如在地址欄中輸入taobao,瀏覽器會自動在主機名中插入www.和.com。

歷史擴展
瀏覽器可以將用戶訪問過的url存儲起來,當你輸入url時,瀏覽器就可以將你輸入的url與歷史記錄中的url進行匹配,並提供一些完整的選項供你選擇。

五、url字符集

URL只能使用英文字母、阿拉伯數字和某些標點符號,不能使用其他文字和符號。這是因爲網絡標準RFC 1738做了硬性規定:

“…Only alphanumerics [0-9a-zA-Z], the special characters “$-_.+!*’(),” [not including the quotes - ed], and reserved characters used for their reserved purposes may be used unencoded within a URL.”

“只有字母和數字[0-9a-zA-Z]、一些特殊符號”$-_.+!*’(),"[不包括雙引號]、以及某些保留字,纔可以不經過編碼直接用於URL。"

如果想詳細瞭解url編碼,請參考這篇博客:關於url編碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章