1. 程式人生 > >女朋友看了會生氣的回答 URI和URL有什麼區別?

女朋友看了會生氣的回答 URI和URL有什麼區別?

### URL是什麼 **URL** 代表著是統一資源定位符(**U**niform **R**esource **L**ocator)。作用是為了告訴使用者 某個資源在 Web 上的地址。這個資源可以是一個 HTML 頁面,一個 CSS 文件,一幅影象或一個貓片等等。上面我們請求貓片的URL就是 `https://upos-sz-staticks3.bilivideo.com/cmaskboss/164203142_30_1.jpg` 這裡面細分,又可以分為好幾個部分。 - 協議部分 表示該URL的協議部分為**http還是https**,會用**//**為分隔符。上面的URL表示網頁用的是**HTTPS**協議,而上面提到的X影天堂用的則是**ftp**協議的下載連結。 - 域名部分 域名是`upos-sz-staticks3.bilivideo.com`,在傳送請求前,會向DNS伺服器解析IP。如果已經知道ip,還可以跳過DNS解析那一步,直接把IP當做域名部分使用。 - 埠部分 域名後面有些時候會帶有埠,和域名之間用:分隔,埠不是一個URL的必須的部分。當網址為**http://**時,預設埠為**80** 當網址為**https://**時,預設埠為**443**,以上兩種都可以省略埠號。上面的URL其實**省略了443埠**號。 - 虛擬目錄 從域名的第一個/開始到最後一個/為止,是虛擬目錄的部分。虛擬目錄也不是URL必須的部分,本例中的虛擬目錄是`/cmaskboss/` - 檔名部分 從域名最後一個/開始到?為止,是檔名部分;如果沒有?,則是從域名最後一個/開始到#為止,是檔名部分;如果沒有?和#,那麼就從域名的最後一個/從開始到結束,都是檔名部分。本例中的檔名是`164203142_30_1.jpg`,檔名也不是一個URL的必須部分。 ### URI是什麼 **URI** 代表著統一資源識別符號(**U**niform **R**esource **I**dentifier),用於標識某一網際網路資源名稱。 該種標識允許使用者對任何包括**本地和網際網路**的資源通過特定的協議進行互動操作。比如上面**URL**中的 `164203142_30_1.jpg`。 ### URL 和 URI 的區別 - **URL**:Uniform Resource Locator **統一資源定位符**; - **URI**: Uniform Resource Identifier **統一資源識別符號**; 其實一直有個誤解,很多人以為URI是URL的子集,其實應該反過來。**URL是URI的子集**才對。簡單解釋下。 假設"小白"(URI)是一種資源,而"在迪麗亦巴的懷裡"表明了一個位置。如果你想要找到(locate)小白,那麼你可以到"在迪麗亦巴懷裡"找到小白,而"在迪麗亦巴懷裡的/小白"才是我們常說的URL。而"在迪麗亦巴懷裡的/小白"(URL)顯然是"小白"(URI)的子集,畢竟,"小白"還可能是"在牛亦菲懷裡的/小白"(其他URL)。 ###### 如果你想每天學習一個知識點? 關注公眾號:【golang小白成長記】 ![](https://cdn.jsdelivr.net/gh/zhaolunallen/picture/2021-1-6/1609890496881-%E9%BB%98%E8%AE%A4%E6%96%87%E4%BB%B61609890361642.png)