瀏覽器如何生成URL


點擊頁面中的鏈接,瀏覽器會根據源碼中相對URL路徑作不同的處理:

(1)有協議名稱,但沒有域名信息

  對於這種形式的URL,它的協議,路徑,查詢字符串和片段ID都以它自身為准,但域名信息的部分,以引用它的那個頁面地址為准。

(2)沒有協議名,但有域名信息

  協議名稱由原發起頁面確定,而所有接下來的URL信息都取自這個相對URL,構成完整的URL。

(3)沒有協議名,沒有域名信息,但有路徑

  如果網頁中明確給出了base標簽, 那么得到的URL是 base URL +路徑。

  如果沒有給出base標簽,這種情況下分為兩種結果:

  a) 如果相對URL的開頭是斜杠(根目錄),則忽略當前頁面自身的URL信息,直接把相對路徑拼在當前頁面的域名后面。

  b) 如果相對URL的開頭不是斜杠,則將當前頁面URL的最后一個/之后的內容去掉,將剩余的內容返回作為base URL,相對路徑拼接在其后。

(4)沒有協議名,沒有域名信息,沒有路徑,但有查詢字符串

  協議,域名,路徑信息全部原封不動的從原引用URL復制過來,查詢字符串和片段ID則來自相對URL。

(5)只有fragment

  只替換fragment部分,其他所有信息從原引用URL復制過來。

<base>標簽

  瀏覽器會從當前頁面的 UR中提取相應的部分來填寫相對 URL 中的空白。使用 <base> 標簽可以改變這一點。瀏覽器隨后將不再使用當前文檔的 URL,而使用指定的基本 URL 來解析所有的相對 URL。這其中包括 <a>、<img>、<link>、<form> 標簽中的 URL。

  瀏覽器也會在當前頁面URL的基礎上對..和.進行相應調整,在地址欄生成新的請求URL。

 


免責聲明!

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



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