URL與資源

1.瀏覽因特網(wǎng)資源

URL是統(tǒng)一資源定位符,它是瀏覽器尋找信息所需要的資源位置。通過URL人們才可以找到并共享英特網(wǎng)上的資源。
URI即統(tǒng)一資源標(biāo)識符,是一種比URL更為通用的資源標(biāo)識符,URL是它的一個子集,URI包括了;兩個子集,還有一個是URN。URL是根據(jù)資源的路徑來標(biāo)識資源,而URN是根據(jù)資源的名稱來標(biāo)識資源,與他們當(dāng)前所處的位置無關(guān)。
比方說如果我們想要獲取URL http://www.joes-hardware.com/seasonal/index-fall.html,那么URL分為以下三部分:

  • 1.URL的第一部分是方案(scheme),方案告訴web客戶端用什么協(xié)議訪問資源,這個例子使用的是HTTP,其他的方案還有FTP,rtsp等等。
  • 2.URL的第二部分是服務(wù)器的地址(www.joes-hardware.com),這部分告訴web客戶端資源位于何處。
  • 3.URL的第三部分是資源路徑(seasonal/index-fall.html),相當(dāng)于是說服務(wù)器的地址是告訴了資源的大致位置,那么資源路徑則是告訴了我們資源的具體位置。

URL的語法

URL是描述這個資源在互聯(lián)網(wǎng)中的哪個位置,我們可以用不同的方案(http,ftp,smtp)來訪問因特網(wǎng)資源,因此URL語法會隨方案的不同而有所不同。即便如此,大部分的方案都遵從相似的語法。
大部分URL方案的URL語法都是由下列9個部分組成:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
幾乎沒有哪個URL包含了所有這9個部分。URL中最重要的是方案,主機(jī)地址,路徑。

  • 1.方案-使用什么協(xié)議
    方案規(guī)定了使用什么協(xié)議訪問資源。方案不分大小寫,所以HTTP和http是一樣的。方案和后面的服務(wù)器主機(jī)地址之間用:隔開。

  • 2.主機(jī)與端口
    要想要在網(wǎng)絡(luò)上訪問資源,我們需要知道在哪個機(jī)器上裝載了資源,以及在那臺機(jī)器的什么地方能夠找到能對目標(biāo)資源進(jìn)行訪問的服務(wù)器。URL的主機(jī)和端口組件就提供了這兩組信息。
    主機(jī)組件標(biāo)識了因特網(wǎng)上能夠訪問該資源的宿主機(jī)器,可以用前面例子的主機(jī)名www.joes-hardware.com或者IP地址來找到主機(jī)名。
    端口組件標(biāo)識了服務(wù)器正在監(jiān)聽的網(wǎng)絡(luò)端口,對下層使用了TCP協(xié)議的HTTP來說,默認(rèn)端口號為80。

  • 3.用戶名和密碼
    很多服務(wù)器要求用戶輸入用戶名和密碼才能訪問資源。這里有幾個例子:
    ftp://ftp.prep.ai.mit.edu/pub/gnu
    ftp://anonymous@ftp.prep.ai.mit.edu/pub/gnu
    ftp://anonymous:my_passwd@ftp.prep.ai.mit.edu/pub/gnu
    http://joe:joespasswd@www.joes-hardware.com/sales_info.txt
    第一個例子沒有給出用戶名和密碼,只有標(biāo)準(zhǔn)的方案,主機(jī)和路徑。如果有的URL方案需要用戶輸入用戶名和密碼,比如FTP,但是用戶沒有輸入用戶名和密碼,那么瀏覽器會插入一個默認(rèn)的用戶名和密碼。
    第二個例子給出了用戶名為anonymous,使用@將用戶名和密碼組件與其他部分分離開。
    第三個例子加入了用戶名和密碼,中間用:隔開。

  • 4路徑
    如果說網(wǎng)絡(luò)資源是一個人,那么服務(wù)器主機(jī)地址可以看做是一個村子,光有這個村子的地址還不足以找到這個人,我們還需要知道它在這個小區(qū)的哪個街道哪個小區(qū)哪個單元,這些信息就是網(wǎng)絡(luò)資源的路徑。我們可以使用/將HTTP路徑組件劃分為一些路徑段。每個路徑段都有自己的參數(shù)(param)組件。

  • 5.參數(shù)
    為了向應(yīng)用程序提供它們所需的輸入?yún)?shù),以便正確的與服務(wù)器進(jìn)行交互,URL中有一個參數(shù)組件。這個組件就是URL中的名值對列表,由字符;將其與URL的其余部分(以及各名值對)分隔開。比如:
    ftp://prep.ai.mit.edu/pub/gnu;type=d
    在這個例子中有一個參數(shù)type=d,參數(shù)名為type,值為d。

    http://www.joes-hardware.com/hammers;sale=false/index.html;graphics=true
    這個例子有兩個路徑段,hammers和index.html,每個路徑段都有一個參數(shù),
    hammers路徑段的參數(shù)是sale=false,參數(shù)名為sale,值為false,index.html路徑段的參數(shù)是graphics=true,參數(shù)名為graphics,值為true。

  • 6.查詢字符串
    很多資源或者數(shù)據(jù)庫都是可以通過提出問題或者進(jìn)行查詢來縮小請求資源的范圍。
    假設(shè)Joe的五金商店在數(shù)據(jù)庫中維護(hù)著一個未售貨物的清單,并可以對清單進(jìn)行查詢來判斷產(chǎn)品是否有貨,那就可以用下列URL來進(jìn)行查詢web數(shù)據(jù)庫,看看編號為12731的貨物是否有貨。

    http://www.joes-hardware.com/inventory-check.cgi?item=12731
    只有問號右邊的內(nèi)容是新出現(xiàn)的,這部分被稱為查詢組件。

  • 7.片段
    有些資源類型,比如HTML,除了資源級之外,還可以做進(jìn)一步的劃分,比如對一個帶有章節(jié)的大型文本文檔來說,資源的URL會指向整個文本文檔。
    為了引用部分資源或者資源的一個片段,URL支持使用片段組件(flag)來表示一個資源內(nèi)部的片段。比如URL可以指向HTML文檔中一個特定的小節(jié)或圖片。片段掛在URL的右手邊,最前面有一個字符#,比如:
    http://www.joes-hardware.com/tools.html#drills
    這個例子中,片段dirlls引用了web服務(wù)器上頁面/tools.html中的一個部分,這部分的名字叫dirlls。
    HTTP服務(wù)器通常只處理整個對象,而不是對象的片段,客戶端不能將片段傳送給服務(wù)器,瀏覽器從服務(wù)器獲得整個資源后會根據(jù)片段來顯示你感興趣的那部分資源。

方案的世界

  • 1.HTTP
    超文本傳輸協(xié)議方案,除了沒有用戶名和密碼,與通用的URL格式相符,如果省略了端口,就默認(rèn)為80.
    基本格式:
    http://<host>:<port>/<path>?<query>#<frag>
    示例:
    http://www.joes-hardware.com/index.html http://www.joes-hardware.com:80/index.html
  • 2.HTTPS
    HTTPS與HTTP實際是一致的,HTTPS為HTTP傳輸使用SSL提供端到端的加密傳輸,其語法與HTTP語法相同,默認(rèn)端口是443。
    基本格式:
    https://<host>:<port>/<path>?<query>#<frag>
    示例:
    https://www.joes-hardware.com/secure.html
  • 3.FTP
    文件傳輸服務(wù)器可以從FTP服務(wù)器上下載或向其上傳文件,并獲取FTP服務(wù)器上的目錄結(jié)構(gòu)內(nèi)容的列表。
    基本格式:
    ftp //<user>:<password>@<host>:<port>/<path>;<params>
    示例:
    ftp //anonymous:joe%40joes-hardware.com@prep.ai.mit.edu:21/pub/gnu/
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容