URL快捷方式html
==================摘自《HTTP權威指南》=======================算法
WEB客戶端能夠理解並使用幾種URL快捷方式。相對URL是在某職員內部指定一個資源的快捷縮略方式。不少瀏覽器還支持URL的「自動擴展」也就是用戶輸入URL的一個關鍵部分,而後由瀏覽器將其他部分填充起來。瀏覽器
一、 相對URL服務器
URL有兩種方式:絕對URL和相對URL。絕對URL中包含有訪問資源所需的所有信息。另外一方面,相對URL是不完整的。要從相對URL中獲取訪問資源所需的所有信息,就必須相對於另外一個,被稱爲基礎(base)的URL進行解析。spa
相對URL是URL的一種便捷縮略記法。若是你收工寫過HTML的話,可能就會發現相對URL是多麼便捷了。例2-1是一個嵌入了相對URL的HTML文檔實例。htm
例2-1是資源:blog
http://www.joes-hardware.com/tools.html 的HTML文檔。繼承
在這個HTML文檔中有一個包含了URL ./hammer.html的超級連接。這個URL看起來並不完整的,但其實是個合法的相對URL。能夠相對於它所在文檔的URL對其進行解釋。在這個例子中,就是相對於Joe的五金商店Web服務器的資源/tools.html.資源
使用縮略形式的相對URL語法,HTML的編寫者能夠省略URL中的方案、主機和其餘一些組件了。這些組件能夠從他們所屬資源的基礎URL中推導出來。其餘資源的URL也可使用這種縮略形式來表示。文檔
在例2-1,基礎URL爲:
http://www.joes-hardware.com/tools.html
用這個URL做爲基礎,能夠推導出缺失的信息。咱們知道資源名爲./hammer.html,但並不知道方案和主機名是多少。經過這個基礎的URL,能夠推導出方案爲http,主機名爲www.joes-hardware.com。下圖展現了相對URL經過基礎URL推導出絕對URL:
相對URL只是URL的片斷或者一小部分。處理URL的應用程序(好比瀏覽器)要可以在相對URL和絕對URL之間進行轉換。
還須要注意的是,相對URL爲保持一組資源的(好比一些HTML頁面)便攜性提供了一種便捷方式。若是使用的是相對URL,就能夠在搬移一組文檔的同時,仍然保持鏈接的有效性。由於相對URL都是基於新基礎進行解釋的。這樣就能夠實如今其餘服務器上提供鏡像內容之類的功能。
(1)、基礎URL
轉換處理的第一步就是找到基礎URL,基礎URL做爲相對URL的參考點使用的,能夠來自如下幾個不一樣的地方。
a、在資源中顯示提供
有些資源會顯示的指定基礎URL。好比html文檔中可能包含了一個定義基礎URL的HTML標記<BASE>,經過它來轉換那個HTML文檔中的全部相對URL。
b、封裝資源的基礎URL
若是在一個沒有顯示指定基礎URL的資源中發現了一個相對URL,能夠將它所屬資源的URL做爲基礎。
c、沒有基礎URL
在某些狀況下,沒有基礎URL。這一般意味着你有一個相對URL,但有時可能只是一個不完整或損壞的URL。
(2)、解析相對引用
前面咱們介紹了URL的基礎組件和語法。要將相對URL轉換爲一個絕對URL,下一步要作的就是將相對URL和基礎URL劃分紅組件段。
實際上這樣只是在解析URL,但這種作法會將其劃分紅一個個組件,所以一般會稱做分解(decomposing)URL。只要將基礎和相對URL劃分紅了組件,就能夠應用圖2-5中的算法來完成轉換了。
這個算法將一個相對URL轉換成其絕對模式,以後就能夠用它來應用資源了。
使用圖2-5中的算法將例2-1中的相對./hammer.html轉換成絕對URL。
a、 路徑爲./hammer.html,基礎URL爲http://www.joes-hardware.com/tools.html
b、 方案爲空,沿着圖表的左半邊向下處理,繼承基礎URL方案
c、 至少一個組件爲空,一直處理到底端,繼承主機和端口組件
d、 未來自相對URL(路徑./hammer.html)組件與咱們繼承來的組件(方案:http,主機:www.joes-hardware.com,端口:80)合併起來,獲得新的絕對URL:http://www.joes-hardware.com/hammershtml
二、自動擴展URL
有些瀏覽器會在用戶提交URL以後,或者在用戶輸入的時候嘗試着自動擴展URL。這就是爲用戶提供了一條捷徑:用戶不須要輸入完整的URL,由於瀏覽器會自動擴展。
這些「自動擴展」特性有一下兩種方式
(1)、主機名擴展
在主機名擴展中,只要有些小提示,瀏覽器一般能夠在沒有幫助的狀況下,將你的主機名擴展爲完整的主機名。好比,你的地址欄輸入yahoo,瀏覽器會自動在主機名中插入www和.com,構建出www.yahoo.com。若是找不到與yahoo匹配的站點,有些瀏覽器會放棄以前嘗試的幾種擴展形式。瀏覽器經過這些簡單的技巧來節省你的時間,減小找不到的可能。
(2)、歷史擴展
瀏覽器用來節省用戶輸入URL時間的另外一種技巧是,將之前用戶訪問過的URL歷史存儲起來。當你輸入URL時,它們就能夠將你輸入的URL與歷史記錄在中URL的前綴進行匹配,並提供一些完整的選項供你選擇。所以,若是你輸入了一個之前訪問過的URL的開始部分,好比http://www.joes-,瀏覽器就可能會建議使用 http://www.joes-hardware.com。 而後你就能夠選擇這個地址,不用輸入完整的URL。