相對URL拼接為絕對URL的過程


 

URL有兩種方式:絕對的相對的. 絕對URL中包含有訪問資源的所需的全部信息

 

舉一個例子: 

<HTML>  
<HEAD><TITLE>Joe's Tools</TITLE></HEAD>  
<BODY>  
<H1>Tools Page</H1>  
<H2>Hammers</H2>  
<p>Joe's Hardware online has the largest selection of   
<A HREF="./hammers.html">  
hammers  
</A> on earth  
</p>  
</BODY>  
</HTML>  

 

其中,基礎URL為:http://www.joes-hardware.com/tools.html

資源./hammers.html即相對的URL,它被解析為:基礎URL+相對URL(后面有講具體的解析規則),

即http://www.joes-hardware.com/hammers.html

  基礎URL

轉換處理的第一步就是找到基礎URL. 基礎URL是相對論URL的參考點. 基礎URL可以來自以下幾個不同的地方

  • 在資源中顯式提供

    有些資源會顯式指定基礎課URL, 如, html中可以用標記<BASE>, 通過它來轉換那個HTML文檔中的所有相對URL

  • 封閉資源的基礎URL

    如果在一個沒有顯式指定基礎URL的資源中發現一個相對URL, 可以將它所屬的資源的URL作為基礎

  • 沒有基礎URL

    如果沒有基礎的URL, 這通常意味着你有一個絕對的URL,但有時可能只是一個不完整或損壞的URL

   解析相對引用

要將一個相對URL轉換為絕對URL,要將其先划分為一個個組件. 把URL划分為組件后,就可以用以下的算法完成轉換了(圖處來自《HTTP權威指南》)

 

我們對上面的./hammers.html使用圖中描述的算法

    1. 路徑為./hammers.html, 基礎URL為http://www.joes-hardware.com/tools.html
    2. 方案(scheme)為空,沿着圖左邊處理,繼承基礎URL方案
    3. 至少一個組件非空,一直處理到底端,繼承主機和端口組件
    4. 將來自相對URL(路徑:./harmers.html)的組件與繼承的組件合並,得到新的絕對URL:http://ww.joes-hardware.com/hammers.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM