HTTP協議-從URI開始

原文鏈接 bloggit

URI

URI, 既是統一資源標識符號,每一個 Web 服務器都有一個 URI 標識符,它在世界範圍內惟一標識並定位信息資源。github

它具備兩種形式,URN (統一資源名)、URL(統一資源定位符)。api

URN

URN (統一資源名),是做爲特定內容的惟一名稱使用的,與目前資源所在地無關。使用這些與位置無關的 URN,就能夠將資源四處搬移。經過 URN,還能夠用同一個名字經過多種網絡訪問協議來訪問資源。瀏覽器

URL

URL(統一資源定位符),是 URI 最多見的形式,它描述了一臺特定服務器上某資源的特定位置。它們能夠明確說明如何從一個精確、固定的位置獲取資源。服務器

一個完整的 URL 一般包括如下三部分:網絡

  • 方案:方案部分,說明了 Web客戶端 訪問資源時所使用的協議類型。一般是HTTP協議。方案可使用其餘協議來訪問資源,它們能夠指向因特網上的任意資源,好比:E-mail: jkchaom@gmail.com ,或者其餘協議。
  • 服務器位置:這部分告知服務器端的位置位於何處。一般的組成是「主機名 + 端口」的形式告知,也有「 IP 地址 + 端口」的形式。端口標識出服務器正在監聽的網絡端口,對下層使用了 TCP 協議的 HTTP 來講,默認端口號爲80;
  • 資源路徑:路徑說明了請求的是服務器上哪一個特定的本地資源。

整合到結構,既是「方案 :// 服務器位置/路徑」spa

此外,一些非必需的 URL 組件也在其中扮演着很是重要的做用:code

  • 查詢:主要用來縮小所請求資源類型範圍。一般以一個「 ?」,開始,好比如下URL 地址,https://api.jkchao.cn/api/art... 。按照常規,查詢組件的組成是以一系列的「名/值」,對的形式出現,名值對之間用字符「&」分隔。
  • 片斷:有些資源類型,能夠作進一步劃分,好比 HTML ,URL 支持使用片斷組件來表示一個資源內部的片斷。一般以「#」 開始,好比:https://github.com/jkchao/blo...HTTP 服務器一般只處理整個對象,而不是對象的片斷,客戶端不能將片斷傳送給服務器,瀏覽器從服務器得到了整個資源以後,會根據片斷來顯示片斷資源。 所以,片斷組件,僅由客戶端使用。

URL 的缺點

URL 表示的是實際的地址,而不是準確的名字。這就意味着 URL 會告訴你資源此時處於什麼位置,它會爲你提供特定端口上特定服務器的名字,告訴你在何處能夠找到這個資源。這種方案的最大弊端在於,若是資源被移走了,URL 也就再也不有效了。那時,它就沒法對對象進行定位了。對象

永久統一資源定位符(PURL),是用 URL 實現 URN 功能的一個例子。其基本思路是在搜索資源的過程當中引入另外一箇中間層,經過一箇中間資源定位符服務器對資源的實際 URL 進行登記和跟蹤,客戶端能夠向定位符請求一個永久 URL ,定位符能夠以一個資源做爲響應,將客戶端重定向到資源當前實際 URL 上去。以下圖所示:blog

相關文章
相關標籤/搜索